Files
wino-mail-dtkqt/CMakeLists.txt
T
javier 15e06d64d4 feat: Complete Preferences system implementation
- PreferencesService: QSettings-based persistence for all app settings
- StartupBehaviorService: Windows registry auto-start management with policy detection
- TranslationService: Language management with QTranslator, 9 built-in languages
- AiActionOptionsService: 30+ AI translation language options
- SettingsView: New 'Preferences' tab with full UI:
  * Search Mode (Local/Online)
  * Default App Mode (Mail/Calendar/Contacts/Settings)
  * Language selector (9 built-in + .qm files)
  * Email Sync Interval (1-1440 minutes)
  * Startup Behavior (auto-start, minimize to tray, notifications)
  * AI Translation (default language, summarize language, summary save path)
- MainMainWindow: Service wiring (PreferencesService, StartupBehaviorService, TranslationService, AiActionOptionsService)
- CMake: Added all new service files

All services integrated and wired to SettingsView.
2026-08-28 02:27:46 +02:00

189 lines
6.1 KiB
CMake

cmake_minimum_required(VERSION 3.16)
project(WinoMailQt VERSION 1.0.0 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# FetchContent for mailio (C++ email library)
include(FetchContent)
# Option to use mailio-based IMAP (OFF by default to avoid Boost dependency issues)
option(USE_MAILIO_IMAP "Use mailio-based IMAP synchronizer (requires Boost)" OFF)
if (USE_MAILIO_IMAP)
# Use pre-built mailio and Boost from thirdparty/
list(APPEND CMAKE_PREFIX_PATH "${PROJECT_SOURCE_DIR}/thirdparty/boost" "${PROJECT_SOURCE_DIR}/thirdparty/mailio")
# Find Boost components
find_package(Boost 1.90.0 EXACT COMPONENTS date_time regex REQUIRED CONFIG)
# Find mailio
find_package(mailio REQUIRED CONFIG)
endif()
# Find OpenSSL for S/MIME support (optional on some platforms)
find_package(OpenSSL QUIET)
if (OPENSSL_FOUND)
message(STATUS "OpenSSL found: ${OPENSSL_VERSION}")
add_compile_definitions(OPENSSL_FOUND)
else()
if (WIN32)
message(WARNING "OpenSSL not found - S/MIME support disabled. Install OpenSSL and set OPENSSL_ROOT_DIR to enable.")
else()
message(WARNING "OpenSSL not found - S/MIME support disabled")
endif()
endif()
find_package(Qt6 COMPONENTS Core Gui Widgets Network Sql Test Concurrent PrintSupport REQUIRED)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)
# Include directories
include_directories(${PROJECT_SOURCE_DIR})
include_directories(${PROJECT_SOURCE_DIR}/src)
include_directories(${PROJECT_SOURCE_DIR}/src/core)
include_directories(${PROJECT_SOURCE_DIR}/src/db)
include_directories(${PROJECT_SOURCE_DIR}/src/utils)
include_directories(${PROJECT_SOURCE_DIR}/src/services)
include_directories(${PROJECT_SOURCE_DIR}/src/services/gmail)
include_directories(${PROJECT_SOURCE_DIR}/src/services/outlook)
include_directories(${PROJECT_SOURCE_DIR}/src/services/imap)
include_directories(${PROJECT_SOURCE_DIR}/src/services/pop3)
include_directories(${PROJECT_SOURCE_DIR}/thirdparty/tags/include)
# Tag library headers for moc
set(TAG_HEADERS
${PROJECT_SOURCE_DIR}/thirdparty/tags/include/tags_line_edit.hpp
${PROJECT_SOURCE_DIR}/thirdparty/tags/include/tags_edit.hpp
)
qt6_wrap_cpp(TAG_MOCS ${TAG_HEADERS})
# Source files
set(SRC_FILES
src/main.cpp
src/core/translator.cpp
src/core/mailitem.cpp
src/core/models/account.cpp
src/core/models/folder.cpp
src/services/request.cpp
src/services/concreterequests.cpp
src/services/requestprocessor.cpp
src/services/changetype.h
src/services/changeprocessor.cpp
src/services/accountservice.cpp
src/services/mailservice.cpp
src/services/mimestorage.cpp
src/services/preferencesservice.cpp
src/services/startupbehaviorservice.cpp
src/services/translationservice.cpp
src/services/aiactionoptionsservice.cpp
src/services/folderservice.cpp
src/services/synchronizer.cpp
src/services/rulesengine.cpp
src/services/imap/imapsynchronizer.cpp
src/services/imap/imapconnection.cpp
src/services/outlook/outlooksynchronizer.cpp
src/services/gmail/gmailsynchronizer.cpp
src/services/pop3/pop3synchronizer.cpp
src/db/databasemanager.cpp
src/db/dao/accountdao.cpp
src/db/dao/folderdao.cpp
src/db/dao/mailitemdao.cpp
src/db/dao/categorydao.cpp
src/db/dao/ruledao.cpp
src/db/dao/templatedao.cpp
src/db/dao/signaturedao.cpp
src/db/dbchangeprocessor.cpp
src/utils/threadutils.cpp
src/core/eventbus.cpp
src/utils/notificationmanager.cpp
src/core/emailmanager.cpp
src/core/emailcomposerbridge.cpp
src/core/authenticator.cpp
src/core/gmailauthenticator.cpp
src/core/outlookauthenticator.cpp
src/core/imapauthenticator.cpp
src/core/synchronizerprovider.cpp
src/core/accountsetupdialoglauncher.cpp
src/core/oauthcallbackserver.cpp
src/ui/mainmainwindow.cpp
src/ui/mainmainwindow.h
src/ui/newmessagedialog.cpp
src/ui/newmessagedialog.h
src/ui/accountsetupdialog.cpp
src/ui/accountsetupdialog.h
src/ui/models/FolderListModel.cpp
src/ui/models/EmailListModel.cpp
src/ui/models/EmailTreeModel.cpp
src/ui/models/DateGroupProxyModel.cpp
src/ui/readerview.cpp
src/ui/readerview.h
src/ui/maillistview.cpp
src/ui/maillistview.h
src/ui/composeview.cpp
src/ui/composeview.h
src/ui/richtexteditor.cpp
src/ui/richtexteditor.h
src/ui/settingsview.cpp
src/ui/settingsview.h
src/ui/contactsview.cpp
src/ui/contactsview.h
src/ui/calendarview.cpp
src/ui/calendarview.h
src/ui/connectionwizard.cpp
src/ui/connectionwizard.h
src/ui/categorytreewidget.cpp
src/ui/categorytreewidget.h
src/ui/rulesmanagerdialog.cpp
src/ui/rulesmanagerdialog.h
src/ui/ruleditordialog.cpp
src/ui/ruleditordialog.h
src/ui/templateeditordialog.cpp
src/ui/templateeditordialog.h
src/ui/templatesmanagerdialog.cpp
src/ui/templatesmanagerdialog.h
src/ui/signaturemanagerdialog.cpp
src/ui/signaturemanagerdialog.h
src/ui/delegates/CompactMailDelegate.cpp
src/ui/delegates/CompactMailDelegate.h
src/ui/delegates/FolderTreeDelegate.cpp
src/ui/delegates/FolderTreeDelegate.h
src/syncscheduler.cpp
thirdparty/tags/src/tags_line_edit.cpp
thirdparty/tags/src/tags_edit.cpp
thirdparty/tags/src/config.cpp
${TAG_MOCS}
)
if (USE_MAILIO_IMAP)
list(APPEND SRC_FILES
src/services/imap/imapsynchronizer_mailio.cpp
src/services/pop3/pop3synchronizer_mailio.cpp
)
endif()
# Executable
add_executable(wino-mail-qt ${SRC_FILES}
icons.qrc
)
# Link Qt
target_link_libraries(wino-mail-qt PRIVATE Qt6::Core Qt6::Gui Qt6::Widgets Qt6::Network Qt6::Sql Qt6::Concurrent)
if (WIN32)
target_link_libraries(wino-mail-qt PRIVATE crypt32)
endif()
if (USE_MAILIO_IMAP)
target_link_libraries(wino-mail-qt PRIVATE mailio::mailio)
endif()
enable_testing()
add_executable(test_mimestorage
tests/unit/test_mimestorage.cpp
src/core/mailitem.cpp
src/services/mimestorage.cpp
)
target_link_libraries(test_mimestorage PRIVATE Qt6::Core Qt6::Test)
add_test(NAME test_mimestorage COMMAND test_mimestorage)