project(LomiriOnlineAccountsUi LANGUAGES CXX)

pkg_check_modules(ACCOUNTSQT accounts-qt${QT_VERSION} REQUIRED)
pkg_check_modules(SIGNONQT libsignon-qt${QT_VERSION} REQUIRED)
pkg_check_modules(APPARMOR libapparmor REQUIRED)
pkg_check_modules(NOTIFY libnotify REQUIRED)
pkg_check_modules(SIGNONPLUGINSCOMMON signon-plugins-common REQUIRED)

set(UI "lomiri-online-accounts-ui")

include_directories(
    ${CMAKE_CURRENT_SOURCE_DIR}
    ${CMAKE_SOURCE_DIR}
    ${CMAKE_SOURCE_DIR}/online-accounts-plugins/lib
)

add_definitions(
    ${ACCOUNTSQT_CFLAGS}
    ${SIGNONQT_CFLAGS}
    ${APPARMOR_CFLAGS}
    ${NOTIFY_CFLAGS}
    ${SIGNONPLUGINSCOMMON_CFLAGS}
)

add_definitions(-DLOA_I18N_DOMAIN="${LOA_I18N_DOMAIN}")
add_definitions(-DSIGNONUI_I18N_DOMAIN="${SIGNONUI_I18N_DOMAIN}")
add_definitions(-DDEBUG_ENABLED)
add_definitions(-DOAU_PLUGIN_DIR="${ONLINE_ACCOUNTS_PLUGIN_DIR}")
add_definitions(-DPLUGIN_PRIVATE_MODULE_DIR="${ONLINE_ACCOUNTS_PLUGIN_PRIVATE_MODULE_DIR}")

set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-undefined")
set(CMAKE_CXX_VISIBILITY_PRESET hidden)

set(UI_SOURCES
    access-model.cpp
    browser-request.cpp
    dialog.cpp
    dialog-request.cpp
    external-browser-request.cpp
    main.cpp
    provider-request.cpp
    request.cpp
    signonui-request.cpp
    ui-server.cpp
)

set(COMMON_SOURCES
    ${CMAKE_SOURCE_DIR}/online-accounts-common/debug.cpp
    ${CMAKE_SOURCE_DIR}/online-accounts-common/i18n.cpp
    ${CMAKE_SOURCE_DIR}/online-accounts-common/ipc.cpp
)

set(UI_QML_SOURCES
    qml/AccountCreationPage.qml
    qml/AuthorizationPage.qml
    qml/ProviderRequest.qml
    qml/SignOnUiPage.qml
)

if (QT_VERSION STREQUAL "5")
    qt5_add_resources(UI_RESOURCES ui.qrc)
endif()

add_executable(${UI}
    ${COMMON_SOURCES}
    ${UI_SOURCES}
    ${UI_RESOURCES}
)
target_link_libraries(${UI}
    Qt${QT_VERSION}::DBus
    Qt${QT_VERSION}::Gui
    Qt${QT_VERSION}::Qml
    Qt${QT_VERSION}::Quick
    lomiri-online-accounts-plugin
    ${ACCOUNTSQT_LDFLAGS}
    ${SIGNONQT_LDFLAGS}
    ${APPARMOR_LDFLAGS}
    ${NOTIFY_LDFLAGS}
    ${SIGNONPLUGINSCOMMON_LDFLAGS}
)
set_target_properties(${UI} PROPERTIES AUTOMOC TRUE)


configure_file(${UI}.desktop.in ${UI}.desktop @ONLY)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${UI}.desktop DESTINATION ${CMAKE_INSTALL_FULL_DATADIR}/applications)

# Install

install(TARGETS ${UI}
        RUNTIME DESTINATION ${CMAKE_INSTALL_FULL_BINDIR}
)
