CMakeLists.txt 13.5 KB
Newer Older
1
2
add_definitions(-DTRANSLATION_DOMAIN=\"libmessageviewer\")

3
4
add_subdirectory(messagepartthemes/grantlee)

5
6
7
8
# KCFG files:
# The main messageviewer.kcfg is configured by CMake and put in the build directory.

if(KDEPIM_ENTERPRISE_BUILD)
Laurent Montel's avatar
Laurent Montel committed
9
10
11
    set(LEGACY_MANGLE_FROM_TO_HEADERS true)
    set(LEGACY_BODY_INVITES true)
    set(EXCHANGE_COMPATIBLE_INVITATIONS true)
12
else()
Laurent Montel's avatar
Laurent Montel committed
13
14
15
    set(LEGACY_MANGLE_FROM_TO_HEADERS false)
    set(LEGACY_BODY_INVITES false)
    set(EXCHANGE_COMPATIBLE_INVITATIONS false)
16
17
18
19
endif()

configure_file(settings/messageviewer.kcfg.cmake ${CMAKE_CURRENT_BINARY_DIR}/messageviewer.kcfg)
include(CheckIncludeFiles)
Tobias C. Berner's avatar
Tobias C. Berner committed
20
21
22
find_package(Inotify)
set_package_properties(Inotify PROPERTIES
                       PURPOSE "Filesystem alteration notifications using inotify")
23
24
25
26
27
if(Inotify_FOUND)
    set(HAVE_SYS_INOTIFY_H 1)
else()
    set(HAVE_SYS_INOTIFY_H 0)
endif()
28
29
30
31
32
33
configure_file(config-messageviewer.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-messageviewer.h)

# target_include_directories does not handle empty include paths
include_directories(${GPGME_INCLUDES})

if(BUILD_TESTING)
34
    add_subdirectory(header/autotests)
Laurent Montel's avatar
Laurent Montel committed
35
36
37
    add_subdirectory(scamdetection/autotests)
    add_subdirectory(scamdetection/tests)
    add_subdirectory(viewerplugins/tests/)
38
    add_subdirectory(htmlwriter/autotests)
Laurent Montel's avatar
Laurent Montel committed
39
    add_subdirectory(viewer/webengine/tests)
40
    add_subdirectory(messagepartthemes/default/autotests)
Laurent Montel's avatar
Laurent Montel committed
41
    add_subdirectory(widgets/autotests/)
42
43
44
45
endif()
add_subdirectory(pics)
add_subdirectory(kconf_update)
add_subdirectory(about)
46
add_subdirectory(messageviewerheaderplugins)
47
48
49
50
51

if (DKIM_CHECKER_BUILD)
    add_definitions(dkim-verify)
endif()

52
if(DEBUG_SIGNATURE)
Laurent Montel's avatar
Laurent Montel committed
53
    add_definitions(-DDEBUG_SIGNATURE)
54
55
endif()

Laurent Montel's avatar
Laurent Montel committed
56
57
58
59
60
set(libmessageviewer_mailviewer_SRCS
    viewer/webengine/mailwebengineview.cpp
    viewer/webengine/mailwebenginepage.cpp
    viewer/webengine/loadexternalreferencesurlinterceptor/loadexternalreferencesurlinterceptor.cpp
    viewer/webengine/cidreferencesurlinterceptor/cidreferencesurlinterceptor.cpp
Laurent Montel's avatar
Laurent Montel committed
61
    viewer/webengine/blockexternalresourcesurlinterceptor/blockexternalresourcesurlinterceptor.cpp
62
    viewer/webengine/blockmailtrackingurlinterceptor/blockmailtrackingurlinterceptor.cpp
Laurent Montel's avatar
Laurent Montel committed
63
    )
Laurent Montel's avatar
Laurent Montel committed
64

65
set(libmessageviewer_viewer_SRCS
66
    viewer/attachmentstrategy.cpp
Laurent Montel's avatar
Laurent Montel committed
67
    viewer/csshelper.cpp
68
    viewer/csshelperbase.cpp
Laurent Montel's avatar
Laurent Montel committed
69
70
71
72
73
74
75
76
    viewer/editorwatcher.cpp
    viewer/objecttreeemptysource.cpp
    viewer/objecttreeviewersource.cpp
    viewer/viewer.cpp
    viewer/viewer_p.cpp
    viewer/messagedisplayformatattribute.cpp
    viewer/urlhandlermanager.cpp
    viewer/mimeparttree/mimeparttreeview.cpp
77
    viewer/mimeparttree/mimetreemodel.cpp
Laurent Montel's avatar
Laurent Montel committed
78
    )
79
80

set(libmessageviewer_widgets_SRCS
Laurent Montel's avatar
Laurent Montel committed
81
82
83
84
85
86
87
88
    widgets/attachmentdialog.cpp
    widgets/configurewidget.cpp
    widgets/printingsettings.cpp
    widgets/htmlstatusbar.cpp
    widgets/vcardviewer.cpp
    widgets/invitationsettings.cpp
    widgets/openattachmentfolderwidget.cpp
    widgets/mailsourceviewtextbrowserwidget.cpp
89
    widgets/submittedformwarningwidget.cpp
Laurent Montel's avatar
Laurent Montel committed
90
    widgets/mailtrackingwarningwidget.cpp
Laurent Montel's avatar
Laurent Montel committed
91
    widgets/mailtrackingdetailsdialog.cpp
Laurent Montel's avatar
Laurent Montel committed
92
    )
93

Laurent Montel's avatar
Laurent Montel committed
94
95
96
set(libmessageviewer_widgets_webengine_SRCS
    widgets/mailsourcewebengineviewer.cpp
    )
97

98
set(libmessageviewer_header_SRCS
Laurent Montel's avatar
Laurent Montel committed
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
    header/contactdisplaymessagememento.cpp
    header/headerstrategy.cpp
    header/richheaderstrategy.cpp
    header/headerstyle.cpp
    header/grantleeheaderstyle.cpp
    header/plainheaderstyle.cpp
    header/headerstyle_util.cpp
    header/grantleeheaderformatter.cpp
    header/grantleeheaderteststyle.cpp
    header/kxface.cpp
    header/headerstyleplugin.cpp
    header/headerstylepluginmanager.cpp
    header/headerstyleinterface.cpp
    header/headerstylemenumanager.cpp
    )
114
115

set(libmessageviewer_scamdetection_SRCS
Laurent Montel's avatar
Laurent Montel committed
116
117
118
119
    scamdetection/scamdetectionwarningwidget.cpp
    scamdetection/scamdetectiondetailsdialog.cpp
    scamdetection/scamattribute.cpp
    scamdetection/scamcheckshorturl.cpp
120
    scamdetection/scamexpandurljob.cpp
Laurent Montel's avatar
Laurent Montel committed
121
    scamdetection/scamcheckshorturlmanager.cpp
Laurent Montel's avatar
Laurent Montel committed
122
    )
123

Laurent Montel's avatar
Laurent Montel committed
124
125
126
set(libmessageviewer_scamdetection_webengine_SRCS
    scamdetection/scamdetectionwebengine.cpp
    )
127

128
set(libmessageviewer_findbar_SRCS
Laurent Montel's avatar
Laurent Montel committed
129
130
    findbar/findbarsourceview.cpp
    )
131
132

set(libmessageviewer_utils_SRCS
133
    utils/iconnamecache.cpp
Laurent Montel's avatar
Laurent Montel committed
134
135
    utils/markmessagereadhandler.cpp
    utils/messageviewerutil.cpp
Sandro Knauß's avatar
Sandro Knauß committed
136
    utils/mimetype.cpp
Laurent Montel's avatar
Laurent Montel committed
137
    )
138

Laurent Montel's avatar
Laurent Montel committed
139
140
141
142
set(libmessageviewer_htmlwriter_webengine_SRCS
    htmlwriter/webengineparthtmlwriter.cpp
    htmlwriter/webengineembedpart.cpp
    )
143

144
145
146
147
148
149
set(libmessageviewer_htmlwriter_SRCS
    ${libmessageviewer_htmlwriter_webengine_SRCS}
    htmlwriter/bufferedhtmlwriter.cpp
    htmlwriter/filehtmlwriter.cpp
    )

150
set(libmessageviewer_antispam_SRCS
Laurent Montel's avatar
Laurent Montel committed
151
152
153
    antispam/spamheaderanalyzer.cpp
    antispam/antispamconfig.cpp
    )
154
155

set(libmessageviewer_job_SRCS
Laurent Montel's avatar
Laurent Montel committed
156
157
    job/modifymessagedisplayformatjob.cpp
    )
158
159

set(libmessageviewer_viewerplugins_SRCS
Laurent Montel's avatar
Laurent Montel committed
160
161
162
163
164
    viewerplugins/viewerpluginmanager.cpp
    viewerplugins/viewerplugin.cpp
    viewerplugins/viewerplugininterface.cpp
    viewerplugins/viewerplugintoolmanager.cpp
    )
165

166
167
168
169
set(libmessageviewer_messagepartthemes_default_SRCS
    messagepartthemes/default/converthtmltoplaintext.cpp
    messagepartthemes/default/defaultrenderer.cpp
    messagepartthemes/default/htmlblock.cpp
170
    messagepartthemes/default/messagepartrenderermanager.cpp
171
    messagepartthemes/default/plugins/attachmentmessagepartrenderer.cpp
172
    messagepartthemes/default/plugins/messagepartrenderer.cpp
Sandro Knauß's avatar
Sandro Knauß committed
173
    messagepartthemes/default/plugins/textmessagepartrenderer.cpp
Sandro Knauß's avatar
Sandro Knauß committed
174
    messagepartthemes/default/plugins/quotehtml.cpp
175
    messagepartthemes/default/messagepartrenderbase.cpp
Volker Krause's avatar
Volker Krause committed
176
    messagepartthemes/default/messagepartrenderplugin.cpp
177
    messagepartthemes/default/messagepartrendererfactory.cpp
178
179
    )

180
181
182
183
set(libmessageviewer_interfaces_SRCS
    interfaces/htmlwriter.cpp
    )

184
set(libmessageviewer_SRCS
Laurent Montel's avatar
Laurent Montel committed
185
    ${libmessageviewer_messagepartthemes_default_SRCS}
186
    ${libmessageviewer_htmlwriter_SRCS}
187
    ${libmessageviewer_messagepartthemes_SRCS}
188
    ${libmessageviewer_scamdetection_webengine_SRCS}
189
    ${libmessageviewer_widgets_webengine_SRCS}
Laurent Montel's avatar
Laurent Montel committed
190
191
192
193
194
195
196
197
198
199
200
    ${libmessageviewer_viewer_SRCS}
    ${libmessageviewer_widgets_SRCS}
    ${libmessageviewer_header_SRCS}
    ${libmessageviewer_scamdetection_SRCS}
    ${libmessageviewer_findbar_SRCS}
    ${libmessageviewer_utils_SRCS}
    ${libmessageviewer_antispam_SRCS}
    ${libmessageviewer_job_SRCS}
    ${libmessageviewer_viewerplugins_SRCS}
    settings/messageviewersettings.cpp
    ${libmessageviewer_mailviewer_SRCS}
201
    ${libmessageviewer_interfaces_SRCS}
Laurent Montel's avatar
Laurent Montel committed
202
    )
203

204
205
qt5_add_resources(libmessageviewer_SRCS messagepartthemes.qrc)

Laurent Montel's avatar
Laurent Montel committed
206
ecm_qt_declare_logging_category(libmessageviewer_SRCS HEADER messageviewer_debug.h IDENTIFIER MESSAGEVIEWER_LOG CATEGORY_NAME org.kde.pim.messageviewer)
207
208

kconfig_add_kcfg_files(libmessageviewer_SRCS
Laurent Montel's avatar
Laurent Montel committed
209
210
    settings/globalsettings_messageviewer.kcfgc
    )
211
212

ki18n_wrap_ui(libmessageviewer_SRCS
Laurent Montel's avatar
Laurent Montel committed
213
214
215
216
    ui/settings.ui
    ui/invitationsettings.ui
    ui/printingsettings.ui
    )
217
218
219
220
221
222


add_library(KF5MessageViewer ${libmessageviewer_SRCS})
generate_export_header(KF5MessageViewer BASE_NAME messageviewer)
add_library(KF5::MessageViewer ALIAS KF5MessageViewer)

223
target_include_directories(KF5MessageViewer INTERFACE "$<INSTALL_INTERFACE:${KDE_INSTALL_INCLUDEDIR_KF5}/MessageViewer/;${KDE_INSTALL_INCLUDEDIR_KF5}/messageviewer>;${Inotify_INCLUDE_DIRS}")
224
225

target_link_libraries(KF5MessageViewer
Laurent Montel's avatar
Laurent Montel committed
226
227
228
229
230
231
232
    PUBLIC
    KF5::MessageCore
    KF5::PimCommon
    KF5::AkonadiCore
    KF5::AkonadiMime
    KF5::Contacts
    KF5::Libkleo
233
    KF5::MimeTreeParser
Laurent Montel's avatar
Laurent Montel committed
234
    PRIVATE
235
    KF5::SyntaxHighlighting
Laurent Montel's avatar
Laurent Montel committed
236
    KF5::ItemViews
Sandro Knauß's avatar
Sandro Knauß committed
237
    Qt5::Network
Laurent Montel's avatar
Laurent Montel committed
238
    KF5::WebEngineViewer
Laurent Montel's avatar
Laurent Montel committed
239
    KF5::LibkdepimAkonadi
Laurent Montel's avatar
Laurent Montel committed
240
241
    KF5::GrantleeTheme
    KF5::KaddressbookGrantlee
Laurent Montel's avatar
Laurent Montel committed
242
    KF5::MailTransportAkonadi
Laurent Montel's avatar
Laurent Montel committed
243
244
245
246
247
    KF5::Mime
    KF5::Mbox
    KF5::PimTextEdit
    KF5::Gravatar
    KF5::IconThemes
248
249
250
251
252
    KF5::I18n
    KF5::KIOFileWidgets
    KF5::KIOWidgets
    KF5::WindowSystem
    KF5::XmlGui
253
254
    Grantlee5::TextDocument
    Grantlee5::Templates
255
    Qt5::PrintSupport
256
    QGpgme
257
    ${Inotify_LIBRARIES}
Laurent Montel's avatar
Laurent Montel committed
258
    )
259

260
261
262
263
set_target_properties(KF5MessageViewer PROPERTIES
    VERSION ${MESSAGEVIEWER_VERSION_STRING}
    SOVERSION ${MESSAGEVIEWER_SOVERSION}
    EXPORT_NAME MessageViewer
Laurent Montel's avatar
Laurent Montel committed
264
    )
265
266
267
268

install(TARGETS
    KF5MessageViewer
    EXPORT KF5MessageViewerTargets ${KF5_INSTALL_TARGETS_DEFAULT_ARGS} ${LIBRARY_NAMELINK}
Laurent Montel's avatar
Laurent Montel committed
269
    )
270

Laurent Montel's avatar
Laurent Montel committed
271
272
273
274
ecm_generate_headers(MessageViewer_Camelcasewebengine_HEADERS
    HEADER_NAMES
    MailWebEnginePage
    MailWebEngineView
275

Laurent Montel's avatar
Laurent Montel committed
276
277
278
279
    REQUIRED_HEADERS MessageViewer_webengine_HEADERS
    PREFIX MessageViewer
    RELATIVE viewer/webengine
    )
Laurent Montel's avatar
Laurent Montel committed
280

Laurent Montel's avatar
Laurent Montel committed
281
282
283
ecm_generate_headers(MessageViewer_Camelcasescam_HEADERS
    HEADER_NAMES
    ScamExpandUrlJob
Laurent Montel's avatar
Laurent Montel committed
284
    ScamCheckShortUrlManager
Laurent Montel's avatar
Laurent Montel committed
285
    ScamCheckShortUrl
Laurent Montel's avatar
Laurent Montel committed
286
287
288
289
290
291
    REQUIRED_HEADERS MessageViewer_scam_HEADERS
    PREFIX MessageViewer
    RELATIVE scamdetection
    )


292
ecm_generate_headers(MessageViewer_Camelcaseviewer_HEADERS
Laurent Montel's avatar
Laurent Montel committed
293
    HEADER_NAMES
294
    AttachmentStrategy
Laurent Montel's avatar
Laurent Montel committed
295
    Viewer
296
    CSSHelperBase
Laurent Montel's avatar
Laurent Montel committed
297
298
299
300
301
302
303
304
    CSSHelper
    ObjectTreeEmptySource
    EditorWatcher
    Stl_Util
    REQUIRED_HEADERS MessageViewer_viewer_HEADERS
    PREFIX MessageViewer
    RELATIVE viewer
    )
305
306

ecm_generate_headers(MessageViewer_Camelcasewidgets_HEADERS
Laurent Montel's avatar
Laurent Montel committed
307
308
309
310
311
312
313
314
    HEADER_NAMES
    InvitationSettings
    PrintingSettings
    ConfigureWidget
    REQUIRED_HEADERS MessageViewer_widgets_HEADERS
    PREFIX MessageViewer
    RELATIVE widgets
    )
315
316

ecm_generate_headers(MessageViewer_Camelcaseutils_HEADERS
Laurent Montel's avatar
Laurent Montel committed
317
    HEADER_NAMES
318
    IconNameCache
Laurent Montel's avatar
Laurent Montel committed
319
    MarkMessageReadHandler
Sandro Knauß's avatar
Sandro Knauß committed
320
321
    MessageViewerUtil
    MimeType
Laurent Montel's avatar
Laurent Montel committed
322
323
324
325
    REQUIRED_HEADERS MessageViewer_utils_HEADERS
    PREFIX MessageViewer
    RELATIVE utils
    )
326
327

ecm_generate_headers(MessageViewer_Camelcaseantispam_HEADERS
Laurent Montel's avatar
Laurent Montel committed
328
329
330
331
332
333
    HEADER_NAMES
    SpamHeaderAnalyzer
    REQUIRED_HEADERS MessageViewer_antispam_HEADERS
    PREFIX MessageViewer
    RELATIVE antispam
    )
334
335

ecm_generate_headers(MessageViewer_Camelcaseinterfaces_HEADERS
Laurent Montel's avatar
Laurent Montel committed
336
    HEADER_NAMES
337
    HtmlWriter
Laurent Montel's avatar
Laurent Montel committed
338
339
340
341
342
343
    BodyPartURLHandler
    URLHandler
    REQUIRED_HEADERS MessageViewer_interfaces_HEADERS
    PREFIX MessageViewer
    RELATIVE interfaces
    )
344

345
346
347
348
349
350
351
352
353
ecm_generate_headers(MessageViewer_Camelcasehtmlwriter_HEADERS
    HEADER_NAMES
    BufferedHtmlWriter
    FileHtmlWriter
    REQUIRED_HEADERS MessageViewer_htmlwriter_HEADERS
    PREFIX MessageViewer
    RELATIVE htmlwriter
    )

354
ecm_generate_headers(MessageViewer_Camelcasesettings_HEADERS
Laurent Montel's avatar
Laurent Montel committed
355
356
357
358
359
360
    HEADER_NAMES
    MessageViewerSettings
    REQUIRED_HEADERS MessageViewer_settings_HEADERS
    PREFIX MessageViewer
    RELATIVE settings
    )
361
362
363


ecm_generate_headers(MessageViewer_Camelcaseheader_HEADERS
Laurent Montel's avatar
Laurent Montel committed
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
    HEADER_NAMES
    HeaderStrategy
    GrantleeHeaderTestStyle
    GrantleeHeaderStyle
    HeaderStyle
    KXFace
    HeaderStyle_Util
    HeaderStylePlugin
    HeaderStyleInterface
    PlainHeaderStyle
    RichHeaderStrategy
    HeaderStylePluginManager
    HeaderStyleMenuManager
    REQUIRED_HEADERS MessageViewer_header_HEADERS
    PREFIX MessageViewer
    RELATIVE header
    )
381
382

ecm_generate_headers(MessageViewer_Camelcaseviewerplugin_HEADERS
Laurent Montel's avatar
Laurent Montel committed
383
384
385
386
387
388
389
390
391
    HEADER_NAMES
    ViewerPluginManager
    ViewerPlugin
    ViewerPluginInterface
    ViewerPluginToolManager
    REQUIRED_HEADERS MessageViewer_viewerplugin_HEADERS
    PREFIX MessageViewer
    RELATIVE viewerplugins
    )
392

Volker Krause's avatar
Volker Krause committed
393
394
395
396
ecm_generate_headers(MessageViewer_Camelcaserenderer_HEADERS
    HEADER_NAMES
    HtmlBlock
    MessagePartRendererBase
397
    MessagePartRendererManager
Volker Krause's avatar
Volker Krause committed
398
399
400
401
402
403
    MessagePartRenderPlugin
    REQUIRED_HEADERS MessageViewer_renderer_HEADERS
    PREFIX MessageViewer
    RELATIVE messagepartthemes/default
    )

404
405
ecm_generate_pri_file(BASE_NAME MessageViewer
    LIB_NAME KF5MessageViewer
406
    DEPS "PimCommon MessageCore AkonadiCore AkonadiMime Contacts Libkleo MimeTreeParser" FILENAME_VAR PRI_FILENAME INCLUDE_INSTALL_DIR ${KDE_INSTALL_INCLUDEDIR_KF5}/MessageViewer
Laurent Montel's avatar
Laurent Montel committed
407
    )
408

Laurent Montel's avatar
Laurent Montel committed
409

410
install(FILES
Laurent Montel's avatar
Laurent Montel committed
411
    ${MessageViewer_Camelcasewebengine_HEADERS}
412
413
414
415
416
    ${MessageViewer_Camelcaseheader_HEADERS}
    ${MessageViewer_Camelcaseviewerplugin_HEADERS}
    ${MessageViewer_Camelcasesettings_HEADERS}
    ${MessageViewer_Camelcaseutils_HEADERS}
    ${MessageViewer_Camelcaseinterfaces_HEADERS}
417
    ${MessageViewer_Camelcasehtmlwriter_HEADERS}
418
419
420
    ${MessageViewer_Camelcaseviewer_HEADERS}
    ${MessageViewer_Camelcasewidgets_HEADERS}
    ${MessageViewer_Camelcaseantispam_HEADERS}
421
    ${MessageViewer_Camelfindbar_HEADERS}
Laurent Montel's avatar
Laurent Montel committed
422
    ${MessageViewer_Camelcasescam_HEADERS}
Volker Krause's avatar
Volker Krause committed
423
    ${MessageViewer_Camelcaserenderer_HEADERS}
424
425
    DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5}/MessageViewer
    COMPONENT Devel
Laurent Montel's avatar
Laurent Montel committed
426
    )
427
428

install(FILES
Laurent Montel's avatar
Laurent Montel committed
429
    ${MessageViewer_webengine_HEADERS}
Laurent Montel's avatar
Laurent Montel committed
430
    ${MessageViewer_scam_HEADERS}
431
432
433
434
435
    ${MessageViewer_viewerplugin_HEADERS}
    ${MessageViewer_settings_HEADERS}
    ${MessageViewer_header_HEADERS}
    ${MessageViewer_utils_HEADERS}
    ${MessageViewer_interfaces_HEADERS}
436
    ${MessageViewer_htmlwriter_HEADERS}
437
438
439
440
    ${MessageViewer_HEADERS}
    ${MessageViewer_viewer_HEADERS}
    ${MessageViewer_widgets_HEADERS}
    ${MessageViewer_antispam_HEADERS}
441
    ${MessageViewer_findbar_HEADERS}
Volker Krause's avatar
Volker Krause committed
442
    ${MessageViewer_renderer_HEADERS}
443
444
445
    ${CMAKE_CURRENT_BINARY_DIR}/messageviewer_export.h
    ${CMAKE_CURRENT_BINARY_DIR}/globalsettings_messageviewer.h
    ${CMAKE_CURRENT_BINARY_DIR}/messageviewer_debug.h
446
    ${CMAKE_CURRENT_BINARY_DIR}/config-messageviewer.h
447
448
    DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5}/messageviewer
    COMPONENT Devel
Laurent Montel's avatar
Laurent Montel committed
449
    )
450
451
452
453
454
455
456
457
458
459

install(FILES
    ${PRI_FILENAME}
    DESTINATION ${ECM_MKSPECS_INSTALL_DIR})


install(FILES header/data/messageviewer_header_themes.knsrc DESTINATION ${KDE_INSTALL_CONFDIR} )

install(FILES notify/messageviewer.notifyrc DESTINATION ${KDE_INSTALL_KNOTIFY5RCDIR} )
install(FILES scamdetection/data/longurlServices.json DESTINATION ${KDE_INSTALL_DATADIR}/messageviewer )