set(APP_NAME lomiri-printing-app)
set(APP_HARDCODE lomiri-printing-app)
set(DESKTOP_FILE "${APP_NAME}.desktop")
set(MAIN_QML Main.qml)
set(ICON_FILE lomiri-printing-app.svg)
set(SNAP_DESKTOP_FILE snap/gui/${DESKTOP_FILE})

# Set the path for the QML files and the backend
set(DATA_DIR "${CMAKE_INSTALL_FULL_DATADIR}/${APP_HARDCODE}")

configure_file (${CMAKE_SOURCE_DIR}/config.hpp.in ${CMAKE_CURRENT_BINARY_DIR}/config.hpp @ONLY)

add_executable (${APP_HARDCODE}
  ${CMAKE_SOURCE_DIR}/main.cpp
  ${CMAKE_CURRENT_BINARY_DIR}/config.hpp
)

target_include_directories (${APP_HARDCODE}
  PRIVATE
  ${CMAKE_CURRENT_BINARY_DIR}
)

target_link_libraries (${APP_HARDCODE}
  PUBLIC
  Qt5::Core
  Qt5::Gui
  Qt5::Qml
  Qt5::Quick
)

set (EXEC_DESTINATION "${CMAKE_INSTALL_BINDIR}")
if (CLICK_MODE)
  set (EXEC_DESTINATION "${CMAKE_INSTALL_PREFIX}")
endif()

# Icon path
set(ICON_DESTINATION "${DATA_DIR}")
if(CLICK_MODE)
  set(ICON_DESTINATION "${CMAKE_INSTALL_PREFIX}")
endif()

# Set the desktop file variables
set(EXEC "env APP_ID=${APP_HARDCODE} ${APP_HARDCODE}")
set(ICON "${ICON_DESTINATION}/${ICON_FILE}")
if (SNAP_MODE)
  set(ICON "$SNAP/${ICON}")
elseif (CLICK_MODE)
  set(ICON "${ICON_FILE}")
endif()

add_subdirectory(backend)
add_subdirectory(components)
add_subdirectory(pages)

# Add tests
if (BUILD_TESTING)
    add_subdirectory(tests)
endif()

install(TARGETS ${APP_HARDCODE} RUNTIME DESTINATION ${EXEC_DESTINATION})

# Install Main.qml and icon
install(FILES ${MAIN_QML} DESTINATION ${DATA_DIR})
install(FILES ${ICON_FILE} DESTINATION ${ICON_DESTINATION})

# Install content-hub json
install(FILES "lomiri-printing-app-content-hub.json"
    DESTINATION ${CMAKE_INSTALL_FULL_DATADIR}/lomiri-content-hub/peers
    RENAME ${APP_HARDCODE})

# Install desktop file
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${DESKTOP_FILE}.in.in ${CMAKE_CURRENT_BINARY_DIR}/${DESKTOP_FILE}.in)
intltool_merge_translations(
  "${CMAKE_CURRENT_BINARY_DIR}/${DESKTOP_FILE}.in"
  "${CMAKE_CURRENT_BINARY_DIR}/${DESKTOP_FILE}"
  ALL 
  UTF8
)

# Install content-hub json & desktop file
if(CLICK_MODE)
  install(FILES "lomiri-printing-app-content-hub.json"
      DESTINATION ${CMAKE_INSTALL_PREFIX})
  install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${DESKTOP_FILE}
      DESTINATION ${CMAKE_INSTALL_PREFIX})
else()
  install(FILES "lomiri-printing-app-content-hub.json"
      DESTINATION ${CMAKE_INSTALL_FULL_DATADIR}/lomiri-content-hub/peers
      RENAME ${APP_HARDCODE})
  install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${DESKTOP_FILE} 
      DESTINATION ${CMAKE_INSTALL_DATADIR}/applications)
endif()

# Show in QtCreator
if(NOT "${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_BINARY_DIR}")
  file(GLOB MAIN_QML_JS_FILES *.apparmor *.js *.json *.qml)
  add_custom_target(lomiri_printing_app_main_qml_js_files ALL SOURCES ${MAIN_QML_JS_FILES})
endif(NOT "${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_BINARY_DIR}")

# Set variables for use in parent scope
set(LOMIRI_PRINTING_APP_DESKTOP_FILE "${DESKTOP_FILE}" PARENT_SCOPE)
