project(akonadiconsole)

include_directories(
  ${AKONADI_INCLUDE_DIR}
  ${Boost_INCLUDE_DIR}
  ${CMAKE_SOURCE_DIR}/libkdepim/
  ${CMAKE_SOURCE_DIR}/messageviewer/
)

include_directories(BEFORE ${CMAKE_CURRENT_BINARY_DIR})

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${KDE4_ENABLE_EXCEPTIONS}")

set(akonadiconsole_bin_SRCS
  agentwidget.cpp
  agentconfigdialog.cpp
  agentconfigmodel.cpp
  akonadibrowsermodel.cpp
  browserwidget.cpp
  collectionattributespage.cpp
  collectioninternalspage.cpp
  collectionaclpage.cpp
  connectionpage.cpp
  dbaccess.cpp
  dbbrowser.cpp
  dbconsole.cpp
  debugwidget.cpp
  instanceselector.cpp
  main.cpp
  mainwidget.cpp
  mainwindow.cpp
  monitorswidget.cpp
  monitorsmodel.cpp
  monitoritem.cpp
  notificationmodel.cpp
  notificationmonitor.cpp
  rawsocketconsole.cpp
  searchdialog.cpp
  searchwidget.cpp
  querydebugger.cpp
  jobtracker.cpp
  jobtrackerwidget.cpp
  jobtrackermodel.cpp
)

qt4_generate_dbus_interface(jobtracker.h org.freedesktop.Akonadi.JobTracker.xml)
qt4_add_dbus_adaptor(akonadiconsole_bin_SRCS ${CMAKE_CURRENT_BINARY_DIR}/org.freedesktop.Akonadi.JobTracker.xml jobtracker.h JobTracker)

qt4_add_dbus_interfaces(akonadiconsole_bin_SRCS
  ${AKONADI_DBUS_INTERFACES_DIR}/org.freedesktop.Akonadi.TracerNotification.xml
)
# Use intalled interface once we can depend on Akoandi 1.1
set_source_files_properties(org.freedesktop.Akonadi.DebugInterface.xml PROPERTIES CLASSNAME DebugInterface)
qt4_add_dbus_interface(akonadiconsole_bin_SRCS
  org.freedesktop.Akonadi.DebugInterface.xml
  debuginterface
)

set_source_files_properties(${AKONADI_DBUS_INTERFACES_DIR}/org.freedesktop.Akonadi.NotificationManager.xml
  PROPERTIES INCLUDE "akonadi/private/notificationmessage_p.h")

set_source_files_properties(${AKONADI_DBUS_INTERFACES_DIR}/org.freedesktop.Akonadi.NotificationSource.xml
  PROPERTIES INCLUDE "akonadi/private/notificationmessagev3_p.h")

qt4_add_dbus_interface(akonadiconsole_bin_SRCS
  ${AKONADI_DBUS_INTERFACES_DIR}/org.freedesktop.Akonadi.NotificationManager.xml
  notificationmanagerinterface
)

qt4_add_dbus_interface(akonadiconsole_bin_SRCS
  ${AKONADI_DBUS_INTERFACES_DIR}/org.freedesktop.Akonadi.NotificationSource.xml
  notificationsourceinterface
)

qt4_add_dbus_interface(akonadiconsole_bin_SRCS
  ${AKONADI_DBUS_INTERFACES_DIR}/org.freedesktop.Akonadi.StorageDebugger.xml
  storagedebuggerinterface
)

kde4_add_ui_files(akonadiconsole_bin_SRCS
  agentwidget.ui
  agentconfigdialog.ui
  browserwidget_itemview.ui
  collectionattributespage.ui
  collectionaclpage.ui
  dbbrowser.ui
  dbconsole.ui
  instanceselector.ui
  rawsocketconsole.ui
  browserwidget_contentview.ui
  collectioninternalspage.ui
)

kde4_add_app_icon(akonadiconsole_bin_SRCS "${CMAKE_CURRENT_SOURCE_DIR}/icons/hi*-app-akonadiconsole.png")

kde4_add_executable(akonadiconsole_bin ${akonadiconsole_bin_SRCS})
set_target_properties(akonadiconsole_bin PROPERTIES OUTPUT_NAME akonadiconsole)

target_link_libraries(akonadiconsole_bin
  ${KDEPIMLIBS_AKONADI_LIBS}
  ${KDEPIMLIBS_AKONADI_CONTACT_LIBS}
  akonadi_next
  ${KDEPIMLIBS_AKONADI_KMIME_LIBS}
  calendarsupport
  ${KDEPIMLIBS_KCALCORE_LIBS}
  kdepim
  messageviewer
  ${KDE4_KCMUTILS_LIBS}
  ${KDE4_KIO_LIBS}
  ${QT_QTSQL_LIBRARY}
  ${QT_QTNETWORK_LIBRARY}
  ${AKONADI_COMMON_LIBRARIES}
)

install(TARGETS akonadiconsole_bin ${INSTALL_TARGETS_DEFAULT_ARGS})
install(PROGRAMS akonadiconsole.desktop DESTINATION ${XDG_APPS_INSTALL_DIR})
install(FILES akonadiconsoleui.rc DESTINATION ${DATA_INSTALL_DIR}/akonadiconsole)

add_subdirectory(icons)

