Fix build: synchronize Request API, fix GmailSynchronizer, and migrate UI to Qt6 Widgets
This commit is contained in:
+47
-138
@@ -4,43 +4,23 @@ project(WinoMailQt VERSION 1.0.0 LANGUAGES CXX)
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
# Find Qt components
|
||||
find_package(Qt6 COMPONENTS Core Gui Widgets Network Sql WebEngineWidgets Qml Multimedia REQUIRED)
|
||||
find_package(Qt6 COMPONENTS Core Gui Widgets Network Sql Test REQUIRED)
|
||||
|
||||
# Optional: DTK Widgets for Deepin look
|
||||
option(USE_DTKWIDGET "Use DTK Widgets for Deepin look" ON)
|
||||
if(USE_DTKWIDGET)
|
||||
find_package(PkgConfig)
|
||||
pkg_check_modules(DTKWIDGET dtkwidget)
|
||||
if(DTKWIDGET_FOUND)
|
||||
message(STATUS "Found DTKWidget: ${DTKWIDGET_VERSION}")
|
||||
add_definitions(-DDTKWIDGET_FOUND)
|
||||
include_directories(${DTKWIDGET_INCLUDE_DIRS})
|
||||
set(DTKWIDGET_LIBS ${DTKWIDGET_LIBRARIES})
|
||||
else()
|
||||
message(WARNING "DTKWidget not found, using fallback Qt widgets")
|
||||
set(USE_DTKWIDGET OFF)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Find optional libraries (example: libetpan, gmime)
|
||||
find_package(PkgConfig)
|
||||
pkg_check_modules(GMIME gmime-3.0)
|
||||
|
||||
# Include directories
|
||||
include_directories(${PROJECT_SOURCE_DIR}/src)
|
||||
if(USE_DTKWIDGET AND DTKWIDGET_FOUND)
|
||||
include_directories(${DTKWIDGET_INCLUDE_DIRS})
|
||||
endif()
|
||||
if(GMIME_FOUND)
|
||||
include_directories(${GMIME_INCLUDE_DIRS})
|
||||
endif()
|
||||
|
||||
# Enable automatic moc, uic, rcc
|
||||
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)
|
||||
|
||||
# Source files
|
||||
set(SRC_FILES
|
||||
src/main.cpp
|
||||
@@ -48,15 +28,20 @@ set(SRC_FILES
|
||||
src/core/mailitem.cpp
|
||||
src/core/models/account.cpp
|
||||
src/core/models/folder.cpp
|
||||
src/services/request.cpp
|
||||
src/services/concreterequests.cpp
|
||||
src/services/poprequest.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/folderservice.cpp
|
||||
src/services/synchronizer.cpp
|
||||
src/services/imap/imapsynchronizer.cpp
|
||||
src/services/outlook/outlooksynchronizer.cpp
|
||||
src/services/gmail/gmailsynchronizer.cpp
|
||||
src/services/request.cpp
|
||||
src/services/concreterequests.cpp
|
||||
src/services/requestprocessor.cpp
|
||||
src/services/changetype.cpp
|
||||
src/services/changprocessor.cpp
|
||||
src/db/databasemanager.cpp
|
||||
src/db/dao/accountdao.cpp
|
||||
src/db/dao/folderdao.cpp
|
||||
@@ -66,112 +51,36 @@ set(SRC_FILES
|
||||
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/syncscheduler.cpp
|
||||
src/core/accountsetupdialoglauncher.cpp
|
||||
src/ui/dialogs/accountsetupdialog.cpp
|
||||
resources.qrc
|
||||
src/core/oauthcallbackserver.cpp
|
||||
src/ui/mainmainwindow.cpp
|
||||
src/ui/mainmainwindow.h
|
||||
src/ui/newmessagedialog.cpp
|
||||
src/ui/newmessagedialog.h
|
||||
src/ui/models/FolderListModel.cpp
|
||||
src/ui/models/EmailListModel.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/settingsview.cpp
|
||||
src/ui/settingsview.h
|
||||
src/ui/contactsview.cpp
|
||||
src/ui/contactsview.h
|
||||
src/ui/calendarview.cpp
|
||||
src/ui/calendarview.h
|
||||
src/syncscheduler.cpp
|
||||
)
|
||||
|
||||
# Executable
|
||||
add_executable(wino-mail-qt ${SRC_FILES})
|
||||
|
||||
# Link Qt
|
||||
target_link_libraries(wino-mail-qt PRIVATE Qt6::Core Qt6::Gui Qt6::Widgets Qt6::Network Qt6::Sql Qt6::WebEngineWidgets Qt6::Qml Qt6::Quick Qt6::Multimedia)
|
||||
|
||||
# Link DTKWidget if found
|
||||
if(USE_DTKWIDGET AND DTKWIDGET_FOUND)
|
||||
target_link_libraries(wino-mail-qt PRIVATE ${DTKWIDGET_LIBS})
|
||||
endif()
|
||||
|
||||
# If using external libs
|
||||
target_link_libraries(wino-mail-qt PRIVATE ${GMIME_LIBRARIES})
|
||||
target_include_directories(wino-mail-qt PRIVATE ${GMIME_INCLUDE_DIRS})
|
||||
|
||||
# Install (optional)
|
||||
install(TARGETS wino-mail-qt DESTINATION bin)
|
||||
|
||||
# Enable testing
|
||||
enable_testing()
|
||||
|
||||
# Find Qt Test
|
||||
find_package(Qt6 COMPONENTS Test REQUIRED)
|
||||
|
||||
# Unit tests for DAOs
|
||||
add_executable(tests_dao_unit
|
||||
tests/unit/test_accountdao.cpp
|
||||
tests/unit/test_folderdao.cpp
|
||||
tests/unit/test_mailitemdao.cpp
|
||||
)
|
||||
|
||||
target_link_libraries(tests_dao_unit
|
||||
PRIVATE Qt6::Core Qt6::Test
|
||||
)
|
||||
|
||||
if(USE_DTKWIDGET AND DTKWIDGET_FOUND)
|
||||
target_link_libraries(tests_dao_unit PRIVATE ${DTKWIDGET_LIBS})
|
||||
endif()
|
||||
if(GMIME_FOUND)
|
||||
target_link_libraries(tests_dao_unit PRIVATE ${GMIME_LIBRARIES})
|
||||
target_include_directories(tests_dao_unit PRIVATE ${GMIME_INCLUDE_DIRS})
|
||||
endif()
|
||||
|
||||
add_test(NAME dao_unit COMMAND tests_dao_unit)
|
||||
|
||||
# Unit tests for Translator
|
||||
add_executable(tests_translator_unit
|
||||
tests/unit/test_translator.cpp
|
||||
)
|
||||
|
||||
target_link_libraries(tests_translator_unit
|
||||
PRIVATE Qt6::Core Qt6::Test
|
||||
)
|
||||
|
||||
if(USE_DTKWIDGET AND DTKWIDGET_FOUND)
|
||||
target_link_libraries(tests_translator_unit PRIVATE ${DTKWIDGET_LIBS})
|
||||
endif()
|
||||
if(GMIME_FOUND)
|
||||
target_link_libraries(tests_translator_unit PRIVATE ${GMIME_LIBRARIES})
|
||||
target_include_directories(tests_translator_unit PRIVATE ${GMIME_INCLUDE_DIRS})
|
||||
endif()
|
||||
|
||||
add_test(NAME translator_unit COMMAND tests_translator_unit)
|
||||
|
||||
# Unit tests for EventBus
|
||||
add_executable(tests_eventbus_unit
|
||||
tests/unit/test_eventbus.cpp
|
||||
)
|
||||
|
||||
target_link_libraries(tests_eventbus_unit
|
||||
PRIVATE Qt6::Core Qt6::Test
|
||||
)
|
||||
|
||||
if(USE_DTKWIDGET AND DTKWIDGET_FOUND)
|
||||
target_link_libraries(tests_eventbus_unit PRIVATE ${DTKWIDGET_LIBS})
|
||||
endif()
|
||||
if(GMIME_FOUND)
|
||||
target_link_libraries(tests_eventbus_unit PRIVATE ${GMIME_LIBRARIES})
|
||||
target_include_directories(tests_eventbus_unit PRIVATE ${GMIME_INCLUDE_DIRS})
|
||||
endif()
|
||||
|
||||
add_test(NAME eventbus_unit COMMAND tests_eventbus_unit)
|
||||
|
||||
# Integration tests (require full application context)
|
||||
add_executable(tests_sync_integration
|
||||
tests/integration/test_syncscheduler.cpp
|
||||
tests/integration/test_notificationmanager.cpp
|
||||
)
|
||||
|
||||
target_link_libraries(tests_sync_integration
|
||||
PRIVATE Qt6::Core Qt6::Gui Qt6::Widgets Qt6::Network Qt6::Sql Qt6::Test
|
||||
)
|
||||
|
||||
if(USE_DTKWIDGET AND DTKWIDGET_FOUND)
|
||||
target_link_libraries(tests_sync_integration PRIVATE ${DTKWIDGET_LIBS})
|
||||
endif()
|
||||
if(GMIME_FOUND)
|
||||
target_link_libraries(tests_sync_integration PRIVATE ${GMIME_LIBRARIES})
|
||||
target_include_directories(tests_sync_integration PRIVATE ${GMIME_INCLUDE_DIRS})
|
||||
endif()
|
||||
|
||||
add_test(NAME sync_integration COMMAND tests_sync_integration)
|
||||
target_link_libraries(wino-mail-qt PRIVATE Qt6::Core Qt6::Gui Qt6::Widgets Qt6::Network Qt6::Sql)
|
||||
|
||||
Reference in New Issue
Block a user