diff --git a/CMakeLists.txt b/CMakeLists.txt index 27c498e..d2fb4bc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,123 +1,124 @@ cmake_minimum_required(VERSION 3.5) set(PIM_VERSION "5.10.90") project(mailcommon VERSION ${PIM_VERSION}) set(KF5_MIN_VERSION "5.56.0") find_package(ECM ${KF5_MIN_VERSION} CONFIG REQUIRED) set(CMAKE_MODULE_PATH ${mailcommon_SOURCE_DIR}/cmake/modules/ ${ECM_MODULE_PATH}) if (POLICY CMP0053) cmake_policy(SET CMP0053 NEW) endif() set(LIBRARY_NAMELINK) include(GenerateExportHeader) include(ECMGenerateHeaders) include(ECMGeneratePriFile) include(ECMSetupVersion) include(FeatureSummary) include(KDEInstallDirs) include(KDECMakeSettings) include(KDEFrameworkCompilerSettings NO_POLICY_SCOPE) include(ECMQtDeclareLoggingCategory) include(ECMAddTests) set(QT_REQUIRED_VERSION "5.10.0") set(MAILCOMMON_LIB_VERSION ${PIM_VERSION}) set(AKONADIMIME_LIB_VERSION "5.10.90") set(MESSAGELIB_LIB_VERSION "5.10.90") set(KMIME_LIB_VERSION "5.10.90") set(KMAILTRANSPORT_LIB_VERSION "5.10.90") set(MAILIMPORTER_LIB_VERSION "5.10.90") set(LIBKDEPIM_LIB_VERSION "5.10.90") set(PIMCOMMON_LIB_VERSION "5.10.90") set(AKONADI_VERSION "5.10.90") -find_package(Qt5 ${QT_REQUIRED_VERSION} CONFIG REQUIRED Widgets DBus Test Xml Multimedia) +find_package(Qt5 ${QT_REQUIRED_VERSION} CONFIG REQUIRED Widgets DBus Test Xml) find_package(KF5Archive ${KF5_MIN_VERSION} CONFIG REQUIRED) find_package(KF5Codecs ${KF5_MIN_VERSION} CONFIG REQUIRED) find_package(KF5Completion ${KF5_MIN_VERSION} CONFIG REQUIRED) find_package(KF5Config ${KF5_MIN_VERSION} CONFIG REQUIRED) find_package(KF5ConfigWidgets ${KF5_MIN_VERSION} CONFIG REQUIRED) find_package(KF5I18n ${KF5_MIN_VERSION} CONFIG REQUIRED) find_package(KF5IconThemes ${KF5_MIN_VERSION} CONFIG REQUIRED) find_package(KF5ItemModels ${KF5_MIN_VERSION} CONFIG REQUIRED) find_package(KF5ItemViews ${KF5_MIN_VERSION} CONFIG REQUIRED) find_package(KF5KIO ${KF5_MIN_VERSION} CONFIG REQUIRED) find_package(KF5TextWidgets ${KF5_MIN_VERSION} CONFIG REQUIRED) find_package(KF5WidgetsAddons ${KF5_MIN_VERSION} CONFIG REQUIRED) find_package(KF5WindowSystem ${KF5_MIN_VERSION} CONFIG REQUIRED) find_package(KF5XmlGui ${KF5_MIN_VERSION} CONFIG REQUIRED) find_package(KF5DBusAddons ${KF5_MIN_VERSION} CONFIG REQUIRED) find_package(KF5SyntaxHighlighting ${KF5_MIN_VERSION} CONFIG REQUIRED) find_package(KF5Akonadi ${AKONADI_VERSION} CONFIG REQUIRED) find_package(KF5AkonadiMime ${AKONADIMIME_LIB_VERSION} CONFIG REQUIRED) find_package(KF5LibkdepimAkonadi ${LIBKDEPIM_LIB_VERSION} CONFIG REQUIRED) find_package(KF5MailImporter ${MAILIMPORTER_LIB_VERSION} CONFIG REQUIRED) find_package(KF5MailTransport ${KMAILTRANSPORT_LIB_VERSION} CONFIG REQUIRED) find_package(KF5MessageComposer ${MESSAGELIB_LIB_VERSION} CONFIG REQUIRED) find_package(KF5MessageCore ${MESSAGELIB_LIB_VERSION} CONFIG REQUIRED) find_package(KF5MessageViewer ${MESSAGELIB_LIB_VERSION} CONFIG REQUIRED) find_package(KF5Mime ${KMIME_LIB_VERSION} CONFIG REQUIRED) find_package(KF5PimCommonAkonadi ${PIMCOMMON_LIB_VERSION} CONFIG REQUIRED) find_package(KF5TemplateParser ${MESSAGELIB_LIB_VERSION} CONFIG REQUIRED) +find_package(Phonon4Qt5 CONFIG REQUIRED) find_package(KF5DesignerPlugin ${KF5_MIN_VERSION} CONFIG) set_package_properties(KF5DesignerPlugin PROPERTIES DESCRIPTION "KF5 designer plugin" TYPE OPTIONAL) ecm_setup_version(PROJECT VARIABLE_PREFIX MAILCOMMON VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/mailcommon_version.h" PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KF5MailCommonConfigVersion.cmake" SOVERSION 5 ) find_package(Xsltproc) set_package_properties(Xsltproc PROPERTIES DESCRIPTION "XSLT processor from libxslt" TYPE REQUIRED PURPOSE "Required to generate D-Bus interfaces for all Akonadi resources.") ########### Targets ########### remove_definitions( -DQT_NO_CAST_FROM_ASCII ) # workaround for https://bugreports.qt.io/browse/QTBUG-74665 (bug in qt5.13 reevaluate it) if (${Qt5Widgets_VERSION} STRGREATER "5.13") MESSAGE(STATUS "Qt version: ${Qt5Widgets_VERSION} DISABLE compile without deprecated methods. bug QTBUG-74665") else() add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0x060000) endif() if (${KF5Config_VERSION} STRGREATER "5.56.0") add_definitions(-DQT_NO_FOREACH) MESSAGE(STATUS "compile without foreach") endif() ########### CMake Config Files ########### set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KF5MailCommon") configure_package_config_file( "${CMAKE_CURRENT_SOURCE_DIR}/KF5MailCommonConfig.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/KF5MailCommonConfig.cmake" INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR} ) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/KF5MailCommonConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/KF5MailCommonConfigVersion.cmake" DESTINATION "${CMAKECONFIG_INSTALL_DIR}" COMPONENT Devel ) install(EXPORT KF5MailCommonTargets DESTINATION "${CMAKECONFIG_INSTALL_DIR}" FILE KF5MailCommonTargets.cmake NAMESPACE KF5::) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/mailcommon_version.h DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5} COMPONENT Devel ) add_subdirectory(src) if(BUILD_TESTING) add_subdirectory(autotests) endif() install( FILES mailcommon.renamecategories mailcommon.categories DESTINATION ${KDE_INSTALL_CONFDIR} ) feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 610ab3c..07bbed5 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,496 +1,496 @@ add_definitions(-DTRANSLATION_DOMAIN=\"libmailcommon\") #add_definitions( -DQT_NO_CAST_FROM_ASCII ) #add_definitions( -DQT_NO_CAST_TO_ASCII ) if(BUILD_TESTING) add_definitions(-DBUILD_TESTING) endif() set(libmailcommon_filter_SRCS filter/kmfilteraccountlist.cpp filter/kmfilterlistbox.cpp filter/filterselectiondialog.cpp filter/filterconverter/filterconverttosieve.cpp filter/filterconverter/filterconverttosieveresultdialog.cpp filter/filterconverter/filterconverttosievepurposemenuwidget.cpp filter/filteractions/filteraction.cpp filter/filteractions/filteractionaddheader.cpp filter/filteractions/filteractionaddtag.cpp filter/filteractions/filteractionaddtoaddressbook.cpp filter/filteractions/filteractioncopy.cpp filter/filteractions/filteractiondecrypt.cpp filter/filteractions/filteractiondelete.cpp filter/filteractions/filteractiondict.cpp filter/filteractions/filteractionencrypt.cpp filter/filteractions/filteractionexec.cpp filter/filteractions/filteractionforward.cpp filter/filteractions/filteractionmove.cpp filter/filteractions/filteractionpipethrough.cpp filter/filteractions/filteractionplaysound.cpp filter/filteractions/filteractionredirect.cpp filter/filteractions/filteractionremoveheader.cpp filter/filteractions/filteractionreplyto.cpp filter/filteractions/filteractionrewriteheader.cpp filter/filteractions/filteractionsendfakedisposition.cpp filter/filteractions/filteractionsendreceipt.cpp filter/filteractions/filteractionsetidentity.cpp filter/filteractions/filteractionsetstatus.cpp filter/filteractions/filteractionstatus.cpp filter/filteractions/filteractionunsetstatus.cpp filter/filteractions/filteractionsettransport.cpp filter/filteractions/filteractionwidget.cpp filter/filteractions/filteractionwithaddress.cpp filter/filteractions/filteractionwithcommand.cpp filter/filteractions/filteractionwithcrypto.cpp filter/filteractions/filteractionwithfolder.cpp filter/filteractions/filteractionwithnone.cpp filter/filteractions/filteractionwithstring.cpp filter/filteractions/filteractionwithstringlist.cpp filter/filteractions/filteractionwithtest.cpp filter/filteractions/filteractionwithuoid.cpp filter/filteractions/filteractionwithurl.cpp filter/filterimporterexporter.cpp filter/filterimporter/filterimporterabstract.cpp filter/filterimporter/filterimporterevolution.cpp filter/filterimporter/filterimportersylpheed.cpp filter/filterimporter/filterimporterthunderbird.cpp filter/filterimporter/filterimporterprocmail.cpp filter/filterimporter/filterimporterbalsa.cpp filter/filterimporter/filterimporterclawsmail.cpp filter/filterimporter/filterimportergmail.cpp filter/filterlog.cpp filter/filtermanager.cpp filter/itemcontext.cpp filter/kmfilterdialog.cpp filter/mailfilter.cpp filter/mdnadvicedialog.cpp filter/filterimporterpathcache.cpp ) set(libmailcommon_filter_dialog filter/dialog/selectthunderbirdfilterfilesdialog.cpp filter/dialog/selectthunderbirdfilterfileswidget.cpp filter/dialog/filteractionmissingfolderdialog.cpp filter/dialog/filteractionmissingsoundurldialog.cpp filter/dialog/filteractionmissingtagdialog.cpp filter/dialog/filteractionmissingaccountdialog.cpp filter/dialog/filteractionmissingtemplatedialog.cpp filter/dialog/filteractionmissingtransportdialog.cpp filter/dialog/filteractionmissingidentitydialog.cpp ) set(libmailcommon_invalidfilters filter/invalidfilters/invalidfilterdialog.cpp filter/invalidfilters/invalidfilterlistview.cpp filter/invalidfilters/invalidfilterwidget.cpp filter/invalidfilters/invalidfilterinfo.cpp filter/invalidfilters/invalidfilterlistitemdelegate.cpp filter/invalidfilters/invalidfilterlistmodel.cpp filter/invalidfilters/invalidfilterinfowidget.cpp ) set(libmailcommon_collection_SRCS collectionpage/attributeregistrar.cpp collectionpage/collectiongeneralpage.cpp collectionpage/collectionexpirypage.cpp collectionpage/attributes/expirecollectionattribute.cpp ) set(libmailcommon_folder_SRCS folder/foldersettings.cpp folder/foldercollectionmonitor.cpp folder/folderrequester.cpp folder/folderselectiondialog.cpp folder/foldertreeview.cpp folder/foldertreewidget.cpp folder/foldertreewidgetproxymodel.cpp folder/entitycollectionorderproxymodel.cpp folder/accountconfigorderdialog.cpp folder/favoritecollectionorderproxymodel.cpp ) set(libmailcommon_job_SRCS job/jobscheduler.cpp job/folderjob.cpp job/expirejob.cpp job/backupjob.cpp ) set(libmailcommon_search_SRCS search/widgethandler/rulewidgethandlermanager.cpp search/searchpattern.cpp search/searchpatternedit.cpp search/widgethandler/encryptionwidgethandler.cpp search/widgethandler/textrulerwidgethandler.cpp search/widgethandler/statusrulewidgethandler.cpp search/widgethandler/messagerulewidgethandler.cpp search/widgethandler/tagrulewidgethandler.cpp search/widgethandler/numericrulewidgethandler.cpp search/widgethandler/daterulewidgethandler.cpp search/widgethandler/numericdoublerulewidgethandler.cpp search/widgethandler/headersrulerwidgethandler.cpp search/searchrule/searchrulenumerical.cpp search/searchrule/searchruledate.cpp search/searchrule/searchrulestring.cpp search/searchrule/searchrulestatus.cpp search/searchrule/searchruleencryption.cpp search/searchrule/searchrule.cpp ) set(libmailcommon_snippets_SRCS snippets/snippetdialog.cpp snippets/snippetsmanager.cpp snippets/snippetsmodel.cpp snippets/snippetvariabledialog.cpp ) set(libmailcommon_tag_SRCS tag/tagwidget.cpp tag/tag.cpp tag/addtagdialog.cpp ) set(libmailcommon_widget_SRCS widgets/redirectdialog.cpp widgets/redirectwidget.cpp widgets/favoritecollectionwidget.cpp ) set(libmailcommon_mdn_SRCS mdn/sendmdnhandler.cpp mdn/mdnstateattribute.cpp ) set(libmailcommon_util_SRCS util/cryptoutils.cpp util/mailutil.cpp util/resourcereadconfigfile.cpp ) set(libmailcommon_SRCS kernel/mailkernel.cpp ${libmailcommon_filter_dialog} ${libmailcommon_util_SRCS} ${libmailcommon_mdn_SRCS} ${libmailcommon_invalidfilters} ${libmailcommon_widget_SRCS} ${libmailcommon_tag_SRCS} ${libmailcommon_snippets_SRCS} ${libmailcommon_search_SRCS} ${libmailcommon_job_SRCS} ${libmailcommon_collection_SRCS} ${libmailcommon_folder_SRCS} ${libmailcommon_filter_SRCS} ) kconfig_add_kcfg_files(libmailcommon_SRCS settings/mailcommonsettings_base.kcfgc ) ecm_qt_declare_logging_category(libmailcommon_SRCS HEADER mailcommon_debug.h IDENTIFIER MAILCOMMON_LOG CATEGORY_NAME org.kde.pim.mailcommon) set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/dbusinterfaces/org.freedesktop.Akonadi.MailFilterAgent.xml PROPERTIES INCLUDE "dbusoperators.h") qt5_add_dbus_interfaces(libmailcommon_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/dbusinterfaces/org.freedesktop.Akonadi.MailFilterAgent.xml ) ki18n_wrap_ui(libmailcommon_SRCS filter/ui/filterconfigwidget.ui snippets/ui/snippetdialog.ui filter/ui/selectthunderbirdfilterfileswidget.ui) set(libmailcommon_SRCS ${libmailcommon_SRCS} filter/soundtestwidget.cpp) macro(add_resource_iface _kcfgFile _ifaceName _className) kcfg_generate_dbus_interface(${CMAKE_CURRENT_SOURCE_DIR}/${_kcfgFile} ${_ifaceName}) string(TOLOWER ${_className} _codeFile) qt5_add_dbus_interface(libmailcommon_SRCS ${CMAKE_CURRENT_BINARY_DIR}/${_ifaceName}.xml ${_codeFile} ${_className} ) endmacro() add_resource_iface(settings.kcfg org.kde.Akonadi.POP3.Settings Pop3Settings) qt5_add_dbus_interfaces(libmailcommon_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/dbusinterfaces/org.kde.Korganizer.Calendar.xml ) add_library(KF5MailCommon ${libmailcommon_SRCS}) generate_export_header(KF5MailCommon BASE_NAME mailcommon) add_library(KF5::MailCommon ALIAS KF5MailCommon) target_link_libraries(KF5MailCommon PUBLIC KF5::AkonadiCore KF5::AkonadiMime KF5::MessageComposer KF5::PimCommonAkonadi KF5::Completion PRIVATE KF5::TextWidgets KF5::I18n KF5::LibkdepimAkonadi KF5::MessageViewer KF5::MailImporter KF5::MessageCore KF5::TemplateParser KF5::Mime KF5::Codecs KF5::MailTransport + Phonon::phonon4qt5 KF5::XmlGui KF5::KIOWidgets KF5::WindowSystem KF5::IconThemes KF5::Archive KF5::ItemViews KF5::SyntaxHighlighting - Qt5::Multimedia ) target_include_directories(KF5MailCommon INTERFACE "$") target_include_directories(KF5MailCommon PUBLIC "$") set_target_properties(KF5MailCommon PROPERTIES VERSION ${MAILCOMMON_VERSION_STRING} SOVERSION ${MAILCOMMON_SOVERSION} EXPORT_NAME MailCommon ) install(TARGETS KF5MailCommon EXPORT KF5MailCommonTargets ${KF5_INSTALL_TARGETS_DEFAULT_ARGS} ${LIBRARY_NAMELINK} ) if (BUILD_TESTING) add_subdirectory(filter/filterimporter/autotests) add_subdirectory(collectionpage/autotests) add_subdirectory(filter/autotests) add_subdirectory(snippets/autotests) add_subdirectory(filter/tests) add_subdirectory(search/autotests) add_subdirectory(mdn/autotests/) endif() ecm_generate_headers(MailCommon_CamelCase_HEADERS HEADER_NAMES CryptoUtils MailUtil ResourceReadConfigFile REQUIRED_HEADERS MailCommon_HEADERS PREFIX MailCommon RELATIVE util ) ecm_generate_headers(MailCommon_Camelcasetop_HEADERS HEADER_NAMES DBusOperators REQUIRED_HEADERS MailCommon_top_HEADERS PREFIX MailCommon ) ecm_generate_headers(MailCommon_Camelcasetag_HEADERS HEADER_NAMES TagWidget Tag AddTagDialog REQUIRED_HEADERS MailCommon_tag_HEADERS PREFIX MailCommon RELATIVE tag ) ecm_generate_headers(MailCommon_Camelcasefolder_HEADERS HEADER_NAMES FolderSettings FolderRequester FolderCollectionMonitor AccountConfigOrderDialog FolderTreeView FolderTreeWidget FolderSelectionDialog FolderTreeWidgetProxyModel FavoriteCollectionOrderProxyModel REQUIRED_HEADERS MailCommon_folder_HEADERS PREFIX MailCommon RELATIVE folder ) ecm_generate_headers(MailCommon_Camelcasekernel_HEADERS HEADER_NAMES MailKernel REQUIRED_HEADERS MailCommon_kernel_HEADERS PREFIX MailCommon RELATIVE kernel ) ecm_generate_headers(MailCommon_Camelcaseinterfaces_HEADERS HEADER_NAMES MailInterfaces REQUIRED_HEADERS MailCommon_interfaces_HEADERS PREFIX MailCommon RELATIVE interfaces ) ecm_generate_headers(MailCommon_Camelcasefilter_HEADERS HEADER_NAMES FilterLog MailFilter FilterImporterExporter FilterManager KMFilterDialog FilterImporterPathCache ItemContext REQUIRED_HEADERS MailCommon_filter_HEADERS PREFIX MailCommon RELATIVE filter ) ecm_generate_headers(MailCommon_Camelcasejob_HEADERS HEADER_NAMES BackupJob JobScheduler FolderJob REQUIRED_HEADERS MailCommon_job_HEADERS PREFIX MailCommon RELATIVE job ) ecm_generate_headers(MailCommon_Camelcasefilteraction_HEADERS HEADER_NAMES FilterAction FilterActionDict REQUIRED_HEADERS MailCommon_filteraction_HEADERS PREFIX MailCommon RELATIVE filter/filteractions/ ) ecm_generate_headers(MailCommon_Camelcasemdn_HEADERS HEADER_NAMES SendMdnHandler MDNStateAttribute REQUIRED_HEADERS MailCommon_mdn_HEADERS PREFIX MailCommon RELATIVE mdn ) ecm_generate_headers(MailCommon_Camelcasecollectionpage_HEADERS HEADER_NAMES CollectionGeneralPage CollectionExpiryPage REQUIRED_HEADERS MailCommon_collectionpage_HEADERS PREFIX MailCommon RELATIVE collectionpage ) ecm_generate_headers(MailCommon_Camelcasecollectionpageattributes_HEADERS HEADER_NAMES ExpireCollectionAttribute REQUIRED_HEADERS MailCommon_collectionpageattributes_HEADERS PREFIX MailCommon RELATIVE collectionpage/attributes ) ecm_generate_headers(MailCommon_Camelcasefilterimporter_HEADERS HEADER_NAMES FilterImporterBalsa FilterImporterClawsMail FilterImporterAbstract REQUIRED_HEADERS MailCommon_filterimporter_HEADERS PREFIX MailCommon RELATIVE filter/filterimporter/ ) ecm_generate_headers(MailCommon_Camelcasesnippets_HEADERS HEADER_NAMES SnippetsManager REQUIRED_HEADERS MailCommon_snippets_HEADERS PREFIX MailCommon RELATIVE snippets ) ecm_generate_headers(MailCommon_Camelcasekernel_HEADERS HEADER_NAMES SearchPattern SearchPatternEdit REQUIRED_HEADERS MailCommon_kernel_HEADERS PREFIX MailCommon RELATIVE search ) ecm_generate_headers(MailCommon_Camelcasewidgets_HEADERS HEADER_NAMES RedirectDialog FavoriteCollectionWidget REQUIRED_HEADERS MailCommon_widgets_HEADERS PREFIX MailCommon RELATIVE widgets ) ecm_generate_headers(MailCommon_Camelcasesearchrule_HEADERS HEADER_NAMES SearchRule SearchRuleStatus REQUIRED_HEADERS MailCommon_searchrule_HEADERS PREFIX MailCommon RELATIVE search/searchrule ) ecm_generate_pri_file(BASE_NAME MailCommon LIB_NAME KF5MailCommon DEPS "AkonadiCore AkonadiMime MessageComposer PimCommon" FILENAME_VAR PRI_FILENAME INCLUDE_INSTALL_DIR ${KDE_INSTALL_INCLUDEDIR_KF5}/MailCommon ) install(FILES ${MailCommon_Camelcasesearchrule_HEADERS} ${MailCommon_CamelCase_HEADERS} ${MailCommon_Camelcasetop_HEADERS} ${MailCommon_Camelcasetag_HEADERS} ${MailCommon_Camelcasefolder_HEADERS} ${MailCommon_Camelcasekernel_HEADERS} ${MailCommon_Camelcaseinterfaces_HEADERS} ${MailCommon_Camelcasefilter_HEADERS} ${MailCommon_Camelcasejob_HEADERS} ${MailCommon_Camelcasefilteraction_HEADERS} ${MailCommon_Camelcasemdn_HEADERS} ${MailCommon_Camelcasecollectionpage_HEADERS} ${MailCommon_Camelcasecollectionpageattributes_HEADERS} ${MailCommon_Camelcasefilterimporter_HEADERS} ${MailCommon_Camelcasesnippets_HEADERS} ${MailCommon_Camelcasewidgets_HEADERS} DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5}/MailCommon COMPONENT Devel ) install(FILES ${MailCommon_searchrule_HEADERS} ${CMAKE_CURRENT_BINARY_DIR}/mailcommon_export.h ${CMAKE_CURRENT_BINARY_DIR}/pop3settings.h ${CMAKE_CURRENT_BINARY_DIR}/mailcommonsettings_base.h ${MailCommon_HEADERS} ${MailCommon_top_HEADERS} ${MailCommon_tag_HEADERS} ${MailCommon_folder_HEADERS} ${MailCommon_kernel_HEADERS} ${MailCommon_interfaces_HEADERS} ${MailCommon_filter_HEADERS} ${MailCommon_job_HEADERS} ${MailCommon_filteraction_HEADERS} ${MailCommon_mdn_HEADERS} ${MailCommon_collectionpage_HEADERS} ${MailCommon_collectionpageattributes_HEADERS} ${MailCommon_filterimporter_HEADERS} ${MailCommon_snippets_HEADERS} ${MailCommon_widgets_HEADERS} DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5}/mailcommon COMPONENT Devel ) install(FILES ${PRI_FILENAME} DESTINATION ${ECM_MKSPECS_INSTALL_DIR}) add_subdirectory(designer) diff --git a/src/filter/autotests/CMakeLists.txt b/src/filter/autotests/CMakeLists.txt index bc86048..2ca1103 100644 --- a/src/filter/autotests/CMakeLists.txt +++ b/src/filter/autotests/CMakeLists.txt @@ -1,281 +1,281 @@ set(mailcommon_filter_test_LIBS Qt5::Test Qt5::Gui KF5::AkonadiCore KF5::AkonadiMime - KF5::LibkdepimAkonadi KF5::MailCommon KF5::PimCommon Qt5::Multimedia + KF5::LibkdepimAkonadi KF5::MailCommon KF5::PimCommon Phonon::phonon4qt5 KF5::KIOWidgets KF5::IconThemes KF5::TemplateParser KF5::MailTransport KF5::I18n KF5::SyntaxHighlighting ) if (KF5_USE_PURPOSE) set(mailcommon_filter_test_LIBS ${mailcommon_filter_test_LIBS} KF5::Purpose KF5::PurposeWidgets) endif() add_definitions(-DTEST_PATH=\"${CMAKE_CURRENT_SOURCE_DIR}\") macro(add_mailcommon_filter_test _name) ecm_add_test(${ARGN} TEST_NAME ${_name} NAME_PREFIX "mailcommon-filter-" LINK_LIBRARIES ${mailcommon_filter_test_LIBS} ) endmacro() macro(add_mailcommon_filter_akonadi_test _name _sources) set(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}) add_akonadi_isolated_test_advanced(${_name} "${ARGN}" "${mailcommon_filter_test_LIBS}") endmacro() set(filter_common_SRCS) ecm_qt_declare_logging_category(filter_common_SRCS HEADER mailcommon_debug.h IDENTIFIER MAILCOMMON_LOG CATEGORY_NAME org.kde.pim.mailcommon) add_mailcommon_filter_test(itemcontexttest itemcontexttest.cpp ../itemcontext.cpp ${filter_common_SRCS} ) add_mailcommon_filter_test(filteractionpipethroughtest filteractionpipethroughtest.cpp ../filteractions/filteractionpipethrough.cpp ../filteractions/filteractionwithcommand.cpp ../filteractions/filteractionwithurl.cpp ${filter_common_SRCS} ) add_mailcommon_filter_test(filteractionheadertest filteractionaddheadertest.cpp ../filteractions/filteractionaddheader.cpp ../filteractions/filteractionwithstringlist.cpp ../filteractions/filteractionwithstring.cpp ${filter_common_SRCS} ) add_mailcommon_filter_test(filteractiondeletetest filteractiondeletetest.cpp ../filteractions/filteractiondelete.cpp ../filteractions/filteractionwithnone.cpp ${filter_common_SRCS} ) add_mailcommon_filter_test(filteractionencrypttest filteractionencrypttest.cpp gpghelper.cpp ../filteractions/filteractionencrypt.cpp ../filteractions/filteractionwithcrypto.cpp ${filter_common_SRCS} ) add_mailcommon_filter_test(filteractiondecrypttest filteractiondecrypttest.cpp gpghelper.cpp ../filteractions/filteractiondecrypt.cpp ../filteractions/filteractionwithcrypto.cpp ${filter_common_SRCS} ) add_mailcommon_filter_test(filteractionrewriteheadertest filteractionrewriteheadertest.cpp ../filteractions/filteractionrewriteheader.cpp ../filteractions/filteractionwithstringlist.cpp ../filteractions/filteractionwithstring.cpp ${filter_common_SRCS} ) add_mailcommon_filter_test(filteractionsetstatustest filteractionsetstatustest.cpp ../filteractions/filteractionsetstatus.cpp ../filteractions/filteractionstatus.cpp ../filteractions/filteractionwithstringlist.cpp ../filteractions/filteractionwithstring.cpp ${filter_common_SRCS} ) add_mailcommon_filter_test(filteractionreplytotest filteractionreplytotest.cpp ../filteractions/filteractionreplyto.cpp ../filteractions/filteractionwithaddress.cpp ../filteractions/filteractionwithstring.cpp ${filter_common_SRCS} ) add_mailcommon_filter_test(filteractionwithurltest filteractionwithurltest.cpp ../filteractions/filteractionwithurl.cpp ../filteractions/filteractionwithaddress.cpp ../filteractions/filteractionwithstring.cpp ${filter_common_SRCS} ) add_mailcommon_filter_test(filteractionremoveheadertest filteractionremoveheadertest.cpp ../filteractions/filteractionremoveheader.cpp ../filteractions/filteractionwithstringlist.cpp ../filteractions/filteractionwithstring.cpp ${filter_common_SRCS} ) add_mailcommon_filter_test(filteractionwithaddresstest filteractionwithaddresstest.cpp ../filteractions/filteractionwithaddress.cpp ../filteractions/filteractionwithstring.cpp ${filter_common_SRCS} ) add_mailcommon_filter_akonadi_test(filteractionaddtoaddressbooktest filteractionaddtoaddressbooktest.cpp ../filteractions/filteractionaddtoaddressbook.cpp ../filteractions/filteractionwithstringlist.cpp ../filteractions/filteractionwithstring.cpp ${filter_common_SRCS} ) add_mailcommon_filter_test(filteractionplaysoundtest filteractionplaysoundtest.cpp ../filteractions/filteractionplaysound.cpp ../filteractions/filteractionwithtest.cpp ../filteractions/filteractionplaysound.cpp ../soundtestwidget.cpp ../dialog/filteractionmissingsoundurldialog.cpp ${filter_common_SRCS} ) add_mailcommon_filter_test(invalidfilterdialogtest invalidfilterdialogtest.cpp ${filter_common_SRCS} ) add_mailcommon_filter_test(invalidfilterwidgettest invalidfilterwidgettest.cpp ${filter_common_SRCS} ) add_mailcommon_filter_test(invalidfilterlistwidgettest invalidfilterlistwidgettest.cpp ${filter_common_SRCS} ) add_mailcommon_filter_test(filteractionunsetstatustest filteractionunsetstatustest.cpp ../filteractions/filteractionunsetstatus.cpp ../filteractions/filteractionstatus.cpp ../filteractions/filteractionwithstringlist.cpp ../filteractions/filteractionwithstring.cpp ${filter_common_SRCS} ) add_mailcommon_filter_test(filteractionredirecttest filteractionredirecttest.cpp ../filteractions/filteractionredirect.cpp ../filteractions/filteractionwithaddress.cpp ../filteractions/filteractionwithstring.cpp ${filter_common_SRCS} ) add_mailcommon_filter_test(invalidfilterinfotest invalidfilterinfotest.cpp ${filter_common_SRCS} ) add_mailcommon_filter_test(filteractionsendfakedispositiontest filteractionsendfakedispositiontest.cpp ../filteractions/filteractionsendfakedisposition.cpp ../filteractions/filteractionwithstringlist.cpp ../filteractions/filteractionwithstring.cpp ${filter_common_SRCS} ) add_mailcommon_filter_test(filteractionforwardtest filteractionforwardtest.cpp ../filteractions/filteractionforward.cpp ../filteractions/filteractionwithaddress.cpp ../filteractions/filteractionwithstring.cpp ../dialog/filteractionmissingtemplatedialog.cpp ${filter_common_SRCS} ) add_mailcommon_filter_test(invalidfilterinfowidgettest invalidfilterinfowidgettest.cpp ${filter_common_SRCS} ) add_mailcommon_filter_test(filteractioncopytest filteractioncopytest.cpp ../filteractions/filteractioncopy.cpp ../filteractions/filteractionwithfolder.cpp ${filter_common_SRCS} ) add_mailcommon_filter_test(filteractionmovetest filteractionmovetest.cpp ../filteractions/filteractionmove.cpp ../filteractions/filteractionwithfolder.cpp ${filter_common_SRCS} ) add_mailcommon_filter_test(filteractionexectest filteractionexectest.cpp ../filteractions/filteractionexec.cpp ../filteractions/filteractionwithcommand.cpp ../filteractions/filteractionwithurl.cpp ${filter_common_SRCS} ) add_mailcommon_filter_test(filteractionsendreceipttest filteractionsendreceipttest.cpp ../filteractions/filteractionsendreceipt.cpp ../filteractions/filteractionwithnone.cpp ${filter_common_SRCS} ) add_mailcommon_filter_test(filteractionsettransporttest filteractionsettransporttest.cpp ../filteractions/filteractionsettransport.cpp ../dialog/filteractionmissingtransportdialog.cpp ${filter_common_SRCS} ) add_mailcommon_filter_test(filterconverttosieveresultdialog filterconverttosieveresultdialogtest.cpp ../filterconverter/filterconverttosieveresultdialog.cpp ../filterconverter/filterconverttosievepurposemenuwidget.cpp ${filter_common_SRCS} ) add_mailcommon_filter_test(mailfiltertest mailfiltertest.cpp ${filter_common_SRCS} ) add_mailcommon_filter_test(filteractionmissingsoundurldialogtest filteractionmissingsoundurldialogtest.cpp ../dialog/filteractionmissingsoundurldialog.cpp ) add_mailcommon_filter_test(filteractionmissingtemplatedialogtest filteractionmissingtemplatedialogtest.cpp ../dialog/filteractionmissingtemplatedialog.cpp ) add_mailcommon_filter_test(filteractionmissingtransportdialogtest filteractionmissingtransportdialogtest.cpp ../dialog/filteractionmissingtransportdialog.cpp ) add_mailcommon_filter_test(filteractionmissingaccountdialogtest filteractionmissingaccountdialogtest.cpp ../dialog/filteractionmissingaccountdialog.cpp ) add_mailcommon_filter_test(filteractionmissingtagdialogtest filteractionmissingtagdialogtest.cpp ../dialog/filteractionmissingtagdialog.cpp ) add_mailcommon_filter_test(filteractionmissingidentitydialogtest filteractionmissingidentitydialogtest.cpp ../dialog/filteractionmissingidentitydialog.cpp ../../../autotests/dummykernel.cpp ) add_mailcommon_filter_test(filterimporterpathcachetest filterimporterpathcachetest.cpp ../filterimporterpathcache.cpp ) diff --git a/src/filter/filteractions/filteractionplaysound.cpp b/src/filter/filteractions/filteractionplaysound.cpp index f2427e2..e711b23 100644 --- a/src/filter/filteractions/filteractionplaysound.cpp +++ b/src/filter/filteractions/filteractionplaysound.cpp @@ -1,91 +1,91 @@ /* * Copyright (c) 1996-1998 Stefan Taferner * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "filteractionplaysound.h" #include "filter/dialog/filteractionmissingsoundurldialog.h" +#include #include -#include + #include #include using namespace MailCommon; FilterActionPlaySound::FilterActionPlaySound() : FilterActionWithTest(QStringLiteral("play sound"), i18n("Play Sound")) , mPlayer(nullptr) { } FilterActionPlaySound::~FilterActionPlaySound() { delete mPlayer; } FilterAction *FilterActionPlaySound::newAction() { return new FilterActionPlaySound(); } bool FilterActionPlaySound::isEmpty() const { return mParameter.isEmpty(); } FilterAction::ReturnCode FilterActionPlaySound::process(ItemContext &, bool) const { if (isEmpty()) { return ErrorButGoOn; } if (!mPlayer) { - mPlayer = new QMediaPlayer; + mPlayer = Phonon::createPlayer(Phonon::NotificationCategory); } - mPlayer->setMedia(QUrl::fromLocalFile(mParameter)); - mPlayer->setVolume(50); + mPlayer->setCurrentSource(mParameter); mPlayer->play(); return GoOn; } SearchRule::RequiredPart FilterActionPlaySound::requiredPart() const { return SearchRule::Envelope; } bool FilterActionPlaySound::argsFromStringInteractive(const QString &argsStr, const QString &filterName) { bool needUpdate = false; argsFromString(argsStr); if (!QFile(mParameter).exists()) { QPointer dlg = new MailCommon::FilterActionMissingSoundUrlDialog(filterName, argsStr); if (dlg->exec()) { mParameter = dlg->soundUrl(); needUpdate = true; } delete dlg; } return needUpdate; } QString FilterActionPlaySound::informationAboutNotValidAction() const { return i18n("Sound file was not defined."); } diff --git a/src/filter/filteractions/filteractionplaysound.h b/src/filter/filteractions/filteractionplaysound.h index cdc64ce..8e0e7ca 100644 --- a/src/filter/filteractions/filteractionplaysound.h +++ b/src/filter/filteractions/filteractionplaysound.h @@ -1,49 +1,52 @@ /* * Copyright (c) 1996-1998 Stefan Taferner * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef MAILCOMMON_FILTERACTIONPLAYSOUND_H #define MAILCOMMON_FILTERACTIONPLAYSOUND_H #include "filteractionwithtest.h" -class QMediaPlayer; + +namespace Phonon { +class MediaObject; +} namespace MailCommon { //============================================================================= // FilterActionPlaySound - execute command // Execute a sound //============================================================================= class FilterActionPlaySound : public FilterActionWithTest { Q_OBJECT public: FilterActionPlaySound(); ~FilterActionPlaySound() override; Q_REQUIRED_RESULT ReturnCode process(ItemContext &context, bool applyOnOutbound) const override; Q_REQUIRED_RESULT SearchRule::RequiredPart requiredPart() const override; static FilterAction *newAction(); Q_REQUIRED_RESULT bool argsFromStringInteractive(const QString &argsStr, const QString &filterName) override; Q_REQUIRED_RESULT bool isEmpty() const override; Q_REQUIRED_RESULT QString informationAboutNotValidAction() const override; private: - mutable QMediaPlayer *mPlayer = nullptr; + mutable Phonon::MediaObject *mPlayer = nullptr; }; } #endif diff --git a/src/filter/soundtestwidget.cpp b/src/filter/soundtestwidget.cpp index 4ca3883..189af27 100644 --- a/src/filter/soundtestwidget.cpp +++ b/src/filter/soundtestwidget.cpp @@ -1,139 +1,134 @@ /* Copyright (c) 2001 Marc Mutz This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include "soundtestwidget.h" #include #include #include #include #include #include -#include #include #include + +#include #include using namespace MailCommon; SoundTestWidget::SoundTestWidget(QWidget *parent) : QWidget(parent) { QHBoxLayout *layout = new QHBoxLayout(this); layout->setContentsMargins(0, 0, 0, 0); m_playButton = new QPushButton(this); m_playButton->setIcon(QIcon::fromTheme(QStringLiteral("arrow-right"))); m_playButton->setIconSize(QSize(KIconLoader::SizeSmall, KIconLoader::SizeSmall)); m_playButton->setToolTip(i18n("Play")); layout->addWidget(m_playButton); m_urlRequester = new KUrlRequester(this); layout->addWidget(m_urlRequester); connect(m_playButton, &QPushButton::clicked, this, &SoundTestWidget::playSound); connect(m_urlRequester, &KUrlRequester::openFileDialog, this, &SoundTestWidget::openSoundDialog); connect(m_urlRequester->lineEdit(), &QLineEdit::textChanged, this, &SoundTestWidget::slotUrlChanged); slotUrlChanged(m_urlRequester->lineEdit()->text()); } SoundTestWidget::~SoundTestWidget() { } void SoundTestWidget::slotUrlChanged(const QString &url) { m_playButton->setEnabled(!url.isEmpty()); Q_EMIT textChanged(url); } void SoundTestWidget::openSoundDialog(KUrlRequester *) { static bool init = true; if (!init) { return; } init = false; QFileDialog *fileDialog = m_urlRequester->fileDialog(); fileDialog->setWindowTitle(i18n("Select Sound File")); QStringList filters; filters << QStringLiteral("audio/x-wav") << QStringLiteral("audio/mpeg") << QStringLiteral("application/ogg") << QStringLiteral("audio/x-adpcm"); fileDialog->setMimeTypeFilters(filters); const QStringList soundDirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QStringLiteral("sound/"), QStandardPaths::LocateDirectory); if (!soundDirs.isEmpty()) { QUrl soundURL; QDir dir; dir.setFilter(QDir::Files | QDir::Readable); for (const QString &soundDir : soundDirs) { dir = soundDir; if (dir.isReadable() && dir.count() > 2) { soundURL.setPath(soundDir); fileDialog->setDirectoryUrl(soundURL); break; } } } } void SoundTestWidget::playSound() { const QString parameter = m_urlRequester->lineEdit()->text(); if (parameter.isEmpty()) { return; } const QString file = QStringLiteral("file:"); const QString play = (parameter.startsWith(file) ? parameter.mid(file.length()) : parameter); - QMediaPlayer *player = new QMediaPlayer; - player->setMedia(QUrl::fromLocalFile(play)); - player->setVolume(50); + Phonon::MediaObject *player = Phonon::createPlayer(Phonon::NotificationCategory, QUrl::fromLocalFile(play)); player->play(); - connect(player, &QMediaPlayer::stateChanged, this, [this, player](QMediaPlayer::State state) { - if (state == QMediaPlayer::StoppedState) { - player->deleteLater(); - } - }); + connect(player, &Phonon::MediaObject::finished, player, &Phonon::MediaObject::deleteLater); } QString SoundTestWidget::url() const { return m_urlRequester->lineEdit()->text(); } void SoundTestWidget::setUrl(const QString &url) { m_urlRequester->lineEdit()->setText(url); } void SoundTestWidget::clear() { m_urlRequester->lineEdit()->clear(); }