SET(CMAKE_REQUIRED_LIBRARIES -lXi)
CHECK_FUNCTION_EXISTS(_XiGetDevicePresenceNotifyEvent XiGetDevicePresenceNotifyEvent_EXISTS)

if( X11_Xinput_FOUND AND XiGetDevicePresenceNotifyEvent_EXISTS )
    set(XiGetDevicePresence_FOUND 1)
    ADD_DEFINITIONS(-DHAVE_XINPUT_AND_DEVICE_NOTIFY=1)
else( X11_Xinput_FOUND AND XiGetDevicePresenceNotifyEvent_EXISTS )
    MESSAGE(STATUS "_XiGetDevicePresenceNotifyEvent is not found, libXi version 1.2.0 or later is required to keep layouts with keyboard hotplugging")
endif( X11_Xinput_FOUND AND XiGetDevicePresenceNotifyEvent_EXISTS )

set ( text_paint_LIB ${KDE4_PLASMA_LIBS} )



### kded daemon ###

set( kded_keyboard_SRCS
    keyboard_daemon.cpp
    layout_memory.cpp
    layout_memory_persister.cpp
    x11_helper.cpp
    xinput_helper.cpp
    xkb_helper.cpp
    keyboard_config.cpp
    keyboard_hardware.cpp
    numlockx.c
    bindings.cpp
# next are temporary for sys tray UI
    layout_tray_icon.cpp
    layouts_menu.cpp
    flags.cpp
    xkb_rules.cpp
)

kde4_add_plugin(kded_keyboard ${kded_keyboard_SRCS})

target_link_libraries(kded_keyboard
    ${KDE4_KDECORE_LIBS}  ${KDE4_KDEUI_LIBS} ${X11_LIBRARIES}
    ${text_paint_LIB}
    ${QT_QTXML_LIBRARY} ${X11_Xkbfile_LIB}
 )

if(X11_XTest_FOUND)
  target_link_libraries(kded_keyboard ${X11_XTest_LIB})
endif(X11_XTest_FOUND)

if(XiGetDevicePresence_FOUND)
  target_link_libraries(kded_keyboard ${X11_Xinput_LIB})
endif(XiGetDevicePresence_FOUND)

install( TARGETS kded_keyboard DESTINATION ${PLUGIN_INSTALL_DIR} )
install( FILES keyboard.desktop DESTINATION ${SERVICES_INSTALL_DIR}/kded )


### plasma applet ###

set( plasma_applet_keyboard_SRCS
    keyboard_applet.cpp
    flags.cpp
    keyboard_config.cpp
    xkb_rules.cpp
    x11_helper.cpp
    xkb_helper.cpp
    layouts_menu.cpp
)

kde4_add_plugin(plasma_applet_keyboard ${plasma_applet_keyboard_SRCS})

target_link_libraries(plasma_applet_keyboard
     ${KDE4_PLASMA_LIBS} ${KDE4_KDEUI_LIBS} ${QT_QTXML_LIBRARY} ${X11_Xkbfile_LIB} ${X11_LIBRARIES}
     ${text_paint_LIB}
)

install( TARGETS plasma_applet_keyboard DESTINATION ${PLUGIN_INSTALL_DIR} )
install( FILES plasma_applet_keyboard.desktop DESTINATION ${SERVICES_INSTALL_DIR} )


### widget lib ###

set( keyboard_layout_widget_SRCS
    layout_widget.cpp
    keyboard_config.cpp
    flags.cpp
    x11_helper.cpp
    xkb_helper.cpp
)

# MODULE?
kde4_add_plugin(keyboard_layout_widget ${keyboard_layout_widget_SRCS})

target_link_libraries(keyboard_layout_widget
     ${KDE4_KDEUI_LIBS} ${X11_LIBRARIES}
     ${text_paint_LIB}
     ${QT_QTXML_LIBRARY} ${X11_Xkbfile_LIB}
)

install( TARGETS keyboard_layout_widget DESTINATION ${PLUGIN_INSTALL_DIR} )


### kcm keyboard ###
include_directories("preview")

set(kcm_keyboard_PART_SRCS 
  kcm_keyboard.cpp
  kcm_keyboard_widget.cpp
  kcm_view_models.cpp
  kcm_add_layout_dialog.cpp
  keyboard_config.cpp
  x11_helper.cpp
  xkb_helper.cpp
  xkb_rules.cpp
  flags.cpp
  iso_codes.cpp
  kcmmisc.cpp
  bindings.cpp
  preview/keyaliases.cpp
  preview/keyboardlayout.cpp
  preview/keyboardpainter.cpp
  preview/keysymbols.cpp
  preview/keysymhelper.cpp
  preview/kbpreviewframe.cpp
  preview/keysym2ucs.cpp
)


kde4_add_ui_files(kcm_keyboard_PART_SRCS kcm_keyboard.ui kcm_add_layout_dialog.ui kcmmiscwidget.ui)

kde4_add_plugin(kcm_keyboard ${kcm_keyboard_PART_SRCS})

target_link_libraries(kcm_keyboard
    ${KDE4_KIO_LIBS} ${X11_Xkbfile_LIB} ${X11_LIBRARIES}
    ${text_paint_LIB}
)

install(TARGETS kcm_keyboard DESTINATION ${PLUGIN_INSTALL_DIR} )

install( FILES kcm_keyboard.desktop DESTINATION ${SERVICES_INSTALL_DIR} )

# Images

add_subdirectory( pics )


# Unit tests

add_subdirectory( tests )
