#################################################
#
#  (C) 2010-2011 Serghei Amelian
#  serghei (DOT) amelian (AT) gmail.com
#
#  Improvements and feedback are welcome
#
#  This file is released under GPL >= 2
#
#################################################

project( korganizer )

include( ConfigureChecks.cmake )
configure_file( ical2vcal.in ical2vcal @ONLY )

tde_import( libtdepim )
tde_import( libkmime )
tde_import( ktnef )
tde_import( libkcal )
tde_import( libtdenetwork )
tde_import( certmanager )
tde_import( libkpimidentities )
tde_import( libkholidays )

add_subdirectory( printing )
add_subdirectory( korgac )
add_subdirectory( pixmaps )
add_subdirectory( sounds )
add_subdirectory( plugins )
add_subdirectory( interfaces )

include_directories(
  ${CMAKE_CURRENT_BINARY_DIR}
  ${CMAKE_CURRENT_SOURCE_DIR}
  ${CMAKE_CURRENT_SOURCE_DIR}/interfaces
  ${CMAKE_CURRENT_SOURCE_DIR}/printing
  ${CMAKE_BINARY_DIR}
  ${CMAKE_SOURCE_DIR}
  ${CMAKE_SOURCE_DIR}/libkholidays
  ${CMAKE_SOURCE_DIR}/libtdepim
  ${CMAKE_SOURCE_DIR}/certmanager/lib
  ${TDE_INCLUDE_DIR}
  ${TQT_INCLUDE_DIRS}
)

link_directories(
  ${TQT_LIBRARY_DIRS}
)


##### other data ################################

tde_install_icons( )

tde_create_translated_desktop(
  SOURCE korganizer.desktop
  PO_DIR korganizer-desktops
)

tde_create_translated_desktop(
  SOURCE dcopcalendar.desktop
  DESTINATION ${SERVICETYPES_INSTALL_DIR}
  PO_DIR korganizer-desktops
)

tde_create_translated_desktop(
  SOURCE
    korganizer_configmain.desktop korganizer_configtime.desktop
    korganizer_configviews.desktop korganizer_configcolors.desktop
    korganizer_configfonts.desktop korganizer_configplugins.desktop
    korganizer_configgroupscheduling.desktop korganizer_configfreebusy.desktop
    korganizer_configdesignerfields.desktop webcal.protocol
  DESTINATION ${SERVICES_INSTALL_DIR}
  PO_DIR korganizer-desktops
)

install( FILES
    uninstall.desktop
  RENAME korganizer_configgroupautomation.desktop
  DESTINATION ${SERVICES_INSTALL_DIR} )

install( FILES
    uninstall.desktop
  RENAME webexport.desktop
  DESTINATION ${SERVICES_INSTALL_DIR}/korganizer )

install( FILES
    uninstall.desktop
  RENAME holidays.desktop
  DESTINATION ${SERVICES_INSTALL_DIR}/korganizer )

install( FILES
    korganizer.kcfg
  DESTINATION ${KCFG_INSTALL_DIR} )

install( FILES
    korganizer.upd
  DESTINATION ${KCONF_UPDATE_INSTALL_DIR} )

install( FILES
    tips korganizerui.rc korganizer_part.rc
  DESTINATION ${DATA_INSTALL_DIR}/korganizer )

install( PROGRAMS
    ${CMAKE_CURRENT_BINARY_DIR}/ical2vcal
  DESTINATION ${BIN_INSTALL_DIR} )


##### korganizer (executable) ###################

tde_add_executable( korganizer AUTOMOC
  SOURCES main.cpp korganizer.cpp koapp.cpp
  LINK korganizer-shared
  DESTINATION ${BIN_INSTALL_DIR}
)


##### kcm_korganizer (module) ###################

tde_add_kpart( kcm_korganizer AUTOMOC
  SOURCES koprefsdialog.cpp
  LINK korganizer-shared
  DESTINATION ${PLUGIN_INSTALL_DIR}
)


##### libkorganizerpart (module) ################

tde_add_kpart( libkorganizerpart AUTOMOC
  SOURCES korganizer_part.cpp
  LINK korganizer-shared
  DESTINATION ${PLUGIN_INSTALL_DIR}
)


##### korganizer_calendar (shared) ##############

tde_add_library( korganizer_calendar SHARED
  SOURCES stdcalendar.cpp
  VERSION 1.0.0
  LINK tdepim-shared kcal-shared
  DESTINATION ${LIB_INSTALL_DIR}
)


##### korganizer_eventviewer (shared) ###########

set( target korganizer_eventviewer )

set( ${target}_SRCS
  koeventviewer.cpp urihandler.cpp koeventviewerdialog.cpp )

tde_save( KDE3_DCOPIDL_EXECUTABLE )
set( KDE3_DCOPIDL_EXECUTABLE ${KDE3_DCOPIDLNG_EXECUTABLE} )
tde_add_dcop_stubs( ${target}_SRCS ${CMAKE_SOURCE_DIR}/kmail/kmailIface.h )
tde_restore( KDE3_DCOPIDL_EXECUTABLE )

tde_add_library( ${target} SHARED AUTOMOC
  SOURCES ${${target}_SRCS}
  VERSION 1.0.0
  LINK kcal-shared
  DESTINATION ${LIB_INSTALL_DIR}
)


##### helper ####################################

macro( process_kcfg _who _out _path _kcfg _kcfgc )
  add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${_path}/${_out}
    COMMAND
      mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/${_path}
    COMMAND ${KDE3_KCFGC_EXECUTABLE}
      -d ${CMAKE_CURRENT_BINARY_DIR}/${_path}
      ${CMAKE_SOURCE_DIR}/${_path}/${_kcfg}
      ${CMAKE_SOURCE_DIR}/${_path}/${_kcfgc}
    DEPENDS
      ${CMAKE_SOURCE_DIR}/${_path}/${_kcfg}
      ${CMAKE_SOURCE_DIR}/${_path}/${_kcfgc} )
  set_property( SOURCE ${_who} APPEND
    PROPERTY OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${_path}/${_out} )
endmacro( )


##### korganizer (shared) #######################

process_kcfg( calendarview.cpp htmlexportsettings.h libkcal
  htmlexportsettings.kcfg htmlexportsettings.kcfgc )

tde_add_library( korganizer SHARED AUTOMOC
  META_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/interfaces/korganizer
  SOURCES
    komessagebox.cpp koagendaview.cpp koagenda.cpp koagendaitem.cpp
    datenavigator.cpp kdatenavigator.cpp datenavigatorcontainer.cpp
    datechecker.cpp komonthview.cpp searchdialog.cpp calendarview.cpp
    koviewmanager.cpp kodialogmanager.cpp archivedialog.cpp kohelper.cpp
    komailclient.cpp kotodoview.cpp kotodoviewitem.cpp kolistview.cpp
    koincidenceeditor.cpp koeventeditor.cpp kotodoeditor.cpp kojournaleditor.cpp
    koprefs.cpp kowindowlist.cpp koeditorgeneral.cpp koeditorgeneralevent.cpp
    koeditorgeneraltodo.cpp koeditorgeneraljournal.cpp koeditordetails.cpp
    koeditoralarms_base.ui koeditoralarms.cpp koeditorrecurrence.cpp
    koeditorattachments.cpp kogroupwareprefspage.ui koeventpopupmenu.cpp
    koeditorfreebusy.cpp publishdialog_base.ui publishdialog.cpp
    koeventview.cpp korganizeriface.skel kcalendariface.skel filtereditdialog.cpp
    filteredit_base.ui kowhatsnextview.cpp kojournalview.cpp journalentry.cpp
    kocore.cpp mailscheduler.cpp kodaymatrix.cpp docprefs.cpp statusdialog.cpp
    koglobals.cpp konewstuff.cpp actionmanager.cpp resourceview.cpp
    navigatorbar.cpp kogroupware.cpp history.cpp koprefs_base.kcfgc
    koincidencetooltip.cpp aboutdata.cpp importdialog.cpp previewdialog.cpp
    korganizerifaceimpl.cpp freebusymanager.cpp freebusyurldialog.cpp
    eventarchiver.cpp koidentitymanager.cpp exportwebdialog.cpp
    kocorehelper.cpp incidencechanger.cpp template_management_dialog_base.ui
    templatemanagementdialog.cpp agendaview.cpp multiagendaview.cpp
    timelineitem.cpp kotimelineview.cpp koattendeeeditor.cpp timelabels.cpp
  VERSION 1.0.0
  LINK
    kdgantt-static
    korganizer_eventviewer-shared korganizer_calendar-shared korg_stdprinting-shared
    kholidays-shared kpimidentities-shared
    tdeutils-shared tdenewstuff-shared
  DESTINATION ${LIB_INSTALL_DIR}
)


##### install import cmake modules ###############

tde_install_export( )