Use QtWebEngine instead of QtWebKit if available
[quassel.git] / src / qtui / CMakeLists.txt
1 # Builds the qtui module
2
3 set(SOURCES
4     aboutdlg.cpp
5     awaylogfilter.cpp
6     awaylogview.cpp
7     bufferwidget.cpp
8     channellistdlg.cpp
9     chatitem.cpp
10     chatline.cpp
11     chatlinemodel.cpp
12     chatlinemodelitem.cpp
13     chatmonitorfilter.cpp
14     chatmonitorview.cpp
15     chatscene.cpp
16     chatview.cpp
17     chatviewsearchbar.cpp
18     chatviewsearchcontroller.cpp
19     chatviewsettings.cpp
20     columnhandleitem.cpp
21     coreconfigwizard.cpp
22     coreconnectdlg.cpp
23     coreconnectionstatuswidget.cpp
24     coreinfodlg.cpp
25     debugbufferviewoverlay.cpp
26     debugconsole.cpp
27     debuglogwidget.cpp
28     debugmessagemodelfilter.cpp
29     inputwidget.cpp
30     ircconnectionwizard.cpp
31     legacysystemtray.cpp
32     mainpage.cpp
33     mainwin.cpp
34     markerlineitem.cpp
35     msgprocessorstatuswidget.cpp
36     nicklistwidget.cpp
37     passwordchangedlg.cpp
38     qtui.cpp
39     qtuiapplication.cpp
40     qtuimessageprocessor.cpp
41     qtuisettings.cpp
42     qtuistyle.cpp
43     receivefiledlg.cpp
44     settingsdlg.cpp
45     settingspagedlg.cpp
46     simplenetworkeditor.cpp
47     systemtray.cpp
48     systraynotificationbackend.cpp
49     taskbarnotificationbackend.cpp
50     titlesetter.cpp
51     topicwidget.cpp
52     verticaldock.cpp
53     webpreviewitem.cpp
54 )
55
56 set(FORMS
57     aboutdlg.ui
58     bufferviewwidget.ui
59     bufferwidget.ui
60     channellistdlg.ui
61     chatviewsearchbar.ui
62     coreconfigwizardintropage.ui
63     coreconfigwizardadminuserpage.ui
64     coreconfigwizardstorageselectionpage.ui
65     coreconfigwizardsyncpage.ui
66     coreconnectauthdlg.ui
67     coreconnectionstatuswidget.ui
68     coreinfodlg.ui
69     debugbufferviewoverlay.ui
70     debugconsole.ui
71     debuglogwidget.ui
72     inputwidget.ui
73     msgprocessorstatuswidget.ui
74     nicklistwidget.ui
75     passwordchangedlg.ui
76     settingsdlg.ui
77     settingspagedlg.ui
78     simplenetworkeditor.ui
79     receivefiledlg.ui
80     topicwidget.ui
81 )
82
83 set(LIBS )
84 set(QT_MODULES )
85
86 if (WITH_KDE4)
87     add_definitions(-DHAVE_KDE ${KDE4_DEFINITIONS})
88     include_directories(${KDE4_INCLUDES})
89     list(APPEND SOURCES knotificationbackend.cpp)
90     list(APPEND LIBS ${KDE4_KDECORE_LIBS} ${KDE4_KDEUI_LIBRARY} ${KDE4_KNOTIFYCONFIG_LIBRARY})
91 endif()
92
93 if (WITH_KF5)
94     list(APPEND SOURCES knotificationbackend.cpp)
95     list(APPEND LIBS KF5::ConfigWidgets KF5::Notifications KF5::NotifyConfig KF5::WidgetsAddons KF5::XmlGui)
96 endif()
97
98 if (LibsnoreQt5_FOUND)
99     add_definitions(-DHAVE_LIBSNORE)
100     list(APPEND SOURCES snorenotificationbackend.cpp)
101     list(APPEND FORMS   snorentificationconfigwidget.ui)
102     list(APPEND LIBS    Snore::Libsnore Snore::LibsnoreSettings)
103 endif()
104
105 if (Qt5Multimedia_FOUND)
106     add_definitions(-DHAVE_QTMULTIMEDIA)
107     list(APPEND QT_MODULES Multimedia)
108     set(SOURCES ${SOURCES} qtmultimedianotificationbackend.cpp)
109     set(FORMS ${FORMS}     qtmultimedianotificationconfigwidget.ui)
110 endif()
111
112 if (PHONON_FOUND OR Phonon4Qt5_FOUND)
113     add_definitions(-DHAVE_PHONON)
114     include_directories(${PHONON_INCLUDES})
115     set(SOURCES ${SOURCES} phononnotificationbackend.cpp)
116     set(FORMS ${FORMS}     phononnotificationconfigwidget.ui)
117     list(APPEND LIBS ${PHONON_LIBS})  # PHONON_LIBRARIES only exists in config mode, it's not set by the legacy FindPhonon.cmake
118 endif()
119
120 if (QT_QTDBUS_FOUND OR Qt5DBus_FOUND)
121     add_definitions(-DHAVE_DBUS)
122     list(APPEND QT_MODULES DBus)
123     if (dbusmenu-qt_FOUND OR dbusmenu-qt5_FOUND)
124         add_definitions(-DHAVE_DBUSMENU)
125         include_directories(${dbusmenu-qt_INCLUDE_DIRS} ${dbusmenu-qt5_INCLUDE_DIRS})
126         if (dbusmenu-qt_FOUND)
127             list(APPEND LIBS dbusmenu-qt)
128         else()
129             list(APPEND LIBS dbusmenu-qt5)
130         endif()
131     endif()
132
133     list(APPEND SOURCES statusnotifieritem.cpp statusnotifieritemdbus.cpp dockmanagernotificationbackend.cpp)
134     qt_add_dbus_interface(SOURCES ../../interfaces/org.kde.StatusNotifierWatcher.xml statusnotifierwatcher)
135     qt_add_dbus_interface(SOURCES ../../interfaces/org.freedesktop.Notifications.xml notificationsclient)
136     qt_add_dbus_adaptor  (SOURCES ../../interfaces/org.kde.StatusNotifierItem.xml statusnotifieritemdbus.h StatusNotifierItemDBus)
137 endif()
138
139 if (HAVE_WEBKIT)
140     add_definitions(-DHAVE_WEBKIT)
141     list(APPEND QT_MODULES WebKit)
142     if (USE_QT5)
143         list(APPEND QT_MODULES WebKitWidgets)
144     endif()
145 endif()
146
147 if (HAVE_WEBENGINE)
148     add_definitions(-DHAVE_WEBENGINE)
149     list(APPEND QT_MODULES WebEngine)
150     if (USE_QT5)
151         list(APPEND QT_MODULES WebEngineWidgets)
152     endif()
153 endif()
154
155 if(HAVE_SSL)
156   set(SOURCES ${SOURCES} sslinfodlg.cpp)
157   set(FORMS ${FORMS} sslinfodlg.ui)
158 endif(HAVE_SSL)
159
160 if (INDICATEQT_FOUND)
161     add_definitions(-DHAVE_INDICATEQT)
162     include_directories(${INDICATEQT_INCLUDE_DIRS})
163     list(APPEND SOURCES indicatornotificationbackend.cpp)
164     list(APPEND FORMS   indicatornotificationconfigwidget.ui)
165     list(APPEND LIBS ${INDICATEQT_LIBRARIES})
166 endif()
167
168 if (WITH_NOTIFICATION_CENTER)
169     add_definitions(-DHAVE_NOTIFICATION_CENTER)
170     list(APPEND SOURCES osxnotificationbackend.mm)
171     list(APPEND LIBS "/System/Library/Frameworks/Foundation.framework")
172 endif()
173
174 if (KF5Sonnet_FOUND)
175     add_definitions(-DHAVE_SONNET)
176     list(APPEND SOURCES settingspages/sonnetsettingspage.cpp)
177     list(APPEND LIBS KF5::SonnetUi)
178 endif()
179
180 foreach(FORM ${FORMS})
181   set(FORMPATH ${FORMPATH} ui/${FORM})
182 endforeach(FORM ${FORMS})
183
184 # handle settingspages
185 include(settingspages/settingspages.cmake)
186 foreach(SP ${SETTINGSPAGES})
187   set(SPSRC ${SPSRC} settingspages/${SP}settingspage.cpp)
188   set(SPFRM ${SPFRM} settingspages/${SP}settingspage.ui)
189 endforeach(SP ${SETTINGSPAGES})
190 foreach(SRC ${SP_SOURCES})
191   set(SPSRC ${SPSRC} settingspages/${SRC})
192 endforeach(SRC ${SP_SOURCES})
193 foreach(FRM ${SP_FORMS})
194   set(SPFRM ${SPFRM} settingspages/${FRM})
195 endforeach(FRM ${SP_FORMS})
196
197 include_directories(${CMAKE_SOURCE_DIR}/src/common
198                     ${CMAKE_SOURCE_DIR}/src/client
199                     ${CMAKE_SOURCE_DIR}/src/qtui
200                     ${CMAKE_SOURCE_DIR}/src/qtui/settingspages
201                     ${CMAKE_SOURCE_DIR}/src/uisupport
202 )
203
204 qt_wrap_ui(UI ${FORMPATH} ${SPFRM})
205
206 if (USE_QT5)
207     list(APPEND QT_MODULES Widgets)
208 endif()
209
210
211 add_library(mod_qtui STATIC ${SOURCES} ${SPSRC} ${UI})
212 qt_use_modules(mod_qtui Core Gui Network ${QT_MODULES})
213
214 target_link_libraries(mod_qtui mod_client mod_common mod_uisupport ${LIBS})