
INCLUDE_DIRECTORIES( ${KDE4_INCLUDES} ${KDE4_INCLUDE_DIR} ${QT_INCLUDES} ${GCRYPT_INCLUDE_DIRS} )

########### next target ###############

SET(kmess_SOURCES
   chat/chathistorymanager.cpp
   chat/chathistorywriter.cpp
   chat/chatmaster.cpp
   chat/chatmessagestyle.cpp
   chat/chatmessageview.cpp
   chat/chatview.cpp
   chat/chat.cpp
   chat/chatwindow.cpp
   chat/contactframe.cpp
   chat/contactswidget.cpp
   chat/emoticonswidget.cpp
   chat/chatstatusbar.cpp
   chat/xsltransformation.cpp
   chat/winkswidget.cpp
   contact/contactbase.cpp
   contact/contact.cpp
   contact/contactextension.cpp
   contact/group.cpp
   contact/invitedcontact.cpp
   contact/msnobject.cpp
   contact/msnstatus.cpp
   dialogs/addcontactdialog.cpp
   dialogs/addemoticondialog.cpp
   dialogs/awaymessagedialog.cpp
   dialogs/chathistorydialog.cpp
   dialogs/contactaddeduserdialog.cpp
   dialogs/contactaddeduserwidget.cpp
   dialogs/contactentry.cpp
   dialogs/contactpropertiesdialog.cpp
   dialogs/invitedialog.cpp
   dialogs/listexportdialog.cpp
   dialogs/userpicturesdialog.cpp
   dialogs/transferentry.cpp
   dialogs/transferwindow.cpp
   model/contactlist.cpp
   model/contactlistmodelitem.cpp
   model/contactlistmodelfilter.cpp
   network/chatinformation.cpp
   network/chatmessage.cpp
   network/mimemessage.cpp
   network/msnchallengehandler.cpp
   network/msnsocketbase.cpp
   network/msnsockettcp.cpp
   network/msnsockethttp.cpp
   network/msnconnection.cpp
   network/msnnotificationconnection.cpp
   network/msnswitchboardconnection.cpp
   network/multipacketmessage.cpp
   network/p2pmessage.cpp
   network/applications/application.cpp
   network/applications/applicationlist.cpp
   network/applications/filetransfer.cpp
   network/applications/filetransferp2p.cpp
   network/applications/inktransferp2p.cpp
   network/applications/mimeapplication.cpp
   network/applications/p2papplicationbase.cpp
   network/applications/p2papplication.cpp
   network/applications/msnobjecttransferp2p.cpp
   network/applications/unknownapplication.cpp
   network/extra/directconnectionbase.cpp
   network/extra/directconnectionpool.cpp
   network/extra/msndirectconnection.cpp
   network/extra/msnftpconnection.cpp
   network/extra/p2pfragmenttracker.cpp
   network/soap/addressbookservice.cpp
   network/soap/httpsoapconnection.cpp
   network/soap/msnappdirectoryservice.cpp
   network/soap/offlineimservice.cpp
   network/soap/passportloginservice.cpp
   network/soap/roamingservice.cpp
   network/soap/soapmessage.cpp
   notification/chatnotification.cpp
   notification/contactstatusnotification.cpp
   notification/notificationmanager.cpp
   notification/newemailnotification.cpp
   notification/addressbooknotifications.cpp
   settings/accountpage.cpp
   settings/accountsettingsdialog.cpp
   settings/accountsmanagerpage.cpp
   settings/contactlistpage.cpp
   settings/chatloggingpage.cpp
   settings/chatstylepage.cpp
   settings/emoticonspage.cpp
   settings/globalsettingsdialog.cpp
   settings/miscellaneouspage.cpp
   utils/crashhandler.cpp
   utils/idletimer.cpp
   utils/inlineeditlabel.cpp
   utils/kmessconfig.cpp
   utils/kmessdbus.cpp
   utils/kmessdbusdatatypes.cpp
   utils/kmessshared.cpp
   utils/nowlisteningclient.cpp
   utils/richtextparser.cpp
   utils/thumbnailprovider.cpp
   utils/xautolock.cpp
   utils/xmlfunctions.cpp
   utils/gradientelidelabel.cpp
   utils/faderwidget.cpp
   account.cpp
   accountaction.cpp
   accountsmanager.cpp
   currentaccount.cpp
   emoticon.cpp
   emoticonmanager.cpp
   emoticontheme.cpp
   initialview.cpp
   kmessapplication.cpp
   kmess.cpp
   kmessdebug.cpp
   kmessinterface.cpp
   kmessview.cpp
   kmessviewdelegate.cpp
   main.cpp
)

SET(kmess_UI_FILES
   initialview.ui
   kmessview.ui
   chat/chatwindow.ui
   chat/contactframe.ui
   chat/contactswidget.ui
   dialogs/addcontactdialog.ui
   dialogs/addemoticondialog.ui
   dialogs/awaymessagedialog.ui
   dialogs/chathistorydialog.ui
   dialogs/contactaddeduserwidget.ui
   dialogs/transferentry.ui
   dialogs/transferwindow.ui
   dialogs/contactentry.ui
   dialogs/contactpropertiesdialog.ui
   dialogs/invitedialog.ui
   dialogs/listexportdialog.ui
   dialogs/userpicturesdialog.ui
   settings/accountpage.ui
   settings/accountsmanagerpage.ui
   settings/contactlistpage.ui
   settings/chatloggingpage.ui
   settings/chatstylepage.ui
   settings/emoticonspage.ui
   settings/miscellaneouspage.ui
   utils/inlineeditlabel.ui
)

SET(kmess_LIBS
   ${KDE4_KDECORE_LIBS}
   ${KDE4_KDEUI_LIBS}
   ${KDE4_KIO_LIBS}
   ${KDE4_KHTML_LIBS}
   ${KDE4_KNOTIFYCONFIG_LIBS}
   ${KDE4_KNEWSTUFF2_LIBS}
   ${KDE4_PHONON_LIBS}
   ${KDE4_SOLID_LIBS}
   ${LIBXML2_LIBRARIES}
   ${LIBXSLT_LIBRARIES}
   ${GCRYPT_LIBRARIES}
   ${QT_QTTEST_LIBRARY}
)

IF( ${GIF_FOUND} )
  INCLUDE_DIRECTORIES( ${GIF_INCLUDE_DIR} )
  SET( kmess_LIBS ${kmess_LIBS} ${GIF_LIBRARIES} )
ENDIF( ${GIF_FOUND} )

IF( ISFQT_FOUND )
  INCLUDE_DIRECTORIES( ${ISFQT_INCLUDE_DIR} )
  SET( kmess_LIBS ${kmess_LIBS} ${ISFQT_LIBRARIES} )
ENDIF( ISFQT_FOUND )

# If LikeBack is enabled, compile it
IF( NOT ${KMESS_DISABLE_LIKEBACK} EQUAL 1 )
  # Enable LikeBack
  SET( kmess_SOURCES ${kmess_SOURCES}
       utils/likeback/likeback.cpp
       utils/likeback/likebackbar.cpp
       utils/likeback/likebackdialog.cpp )
  SET( kmess_UI_FILES ${kmess_UI_FILES}
       utils/likeback/likebackbar.ui
       utils/likeback/likebackdialog.ui )
ENDIF( NOT ${KMESS_DISABLE_LIKEBACK} EQUAL 1 )

# On Mac OS, add Mac-specific files
if(APPLE)
  set(kmess_SOURCES ${kmess_SOURCES}  notification/macnotification.cpp)
endif(APPLE)

#new system tray spec - optional
IF( HAVE_NEW_TRAY )
  SET( kmess_SOURCES ${kmess_SOURCES}
       notification/newsystemtraywidget.cpp )
  INCLUDE_DIRECTORIES( ${KNOTIFICATIONITEM_INCLUDE_DIR} )
  SET( kmess_LIBS ${kmess_LIBS} ${KNOTIFICATIONITEM_LIBRARIES} )
ELSE()
  SET( kmess_SOURCES ${kmess_SOURCES}
       notification/systemtraywidget.cpp )
ENDIF()

# If we're compiling in debug mode:
IF( ${KMESS_ENABLE_DEBUG_OUTPUT} EQUAL 1 )
  # Enable the Network Window
  SET(kmess_SOURCES  ${kmess_SOURCES}  dialogs/networkwindow.cpp)
  SET(kmess_UI_FILES ${kmess_UI_FILES} dialogs/networkwindow.ui)
  # Enable the testing class
  SET(kmess_SOURCES  ${kmess_SOURCES}  kmesstest.cpp)
  # Enable the old parser
  SET(kmess_SOURCES  ${kmess_SOURCES}  ../tests/old_richtextparser.cpp)
  # Enable the Models tester
  IF( CMAKE_BUILD_TYPE STREQUAL debugfull )
    SET( kmess_SOURCES ${kmess_SOURCES} ../tests/modeltest/modeltest.cpp )
  ENDIF( CMAKE_BUILD_TYPE STREQUAL debugfull )
ENDIF( ${KMESS_ENABLE_DEBUG_OUTPUT} EQUAL 1 )

# Add XScreensaver library for away-idle detection.
IF( X11_Xscreensaver_FOUND )
  SET(kmess_LIBS    ${kmess_LIBS} ${X11_Xscreensaver_LIB} ${X11_LIBRARIES} )
ENDIF( X11_Xscreensaver_FOUND )


IF( ${KDE_VERSION} VERSION_LESS 4.4.0 )
  # Set our KDE debug number to be the default
  add_definitions( -DKDE_DEFAULT_DEBUG_AREA=5130 )
ENDIF()

# Define the app icon for Windows / Mac OS
SET( kmess_SRCS )
KDE4_ADD_APP_ICON( kmess_SRCS ../data/icons/hi*-app-kmess.png )
SET( kmess_SOURCES ${kmess_SOURCES} ${kmess_SRCS} )

# Create a DBus adapter from XML file
QT4_ADD_DBUS_ADAPTOR( kmess_SOURCES utils/kmessdbus.xml utils/kmessdbus.h KMessDBus )

# Define all files
KDE4_ADD_UI_FILES( kmess_SOURCES ${kmess_UI_FILES} )
KDE4_ADD_EXECUTABLE( kmess ${kmess_SOURCES} )

# Link to final executable
TARGET_LINK_LIBRARIES( kmess ${kmess_LIBS} )

INSTALL( TARGETS kmess DESTINATION ${BIN_INSTALL_DIR})

INSTALL( FILES  chat/chatwindowui.rc DESTINATION ${DATA_INSTALL_DIR}/kmess )
INSTALL( FILES  kmessinterfaceui.rc  DESTINATION ${DATA_INSTALL_DIR}/kmess )
