feat: EmailTreeModel grouping modes + MailListView integration

- EmailTreeModel: 4 grouping modes
  * NoGrouping - flat list
  * GroupByDate - chronological groups (Hoy, Ayer, Esta semana...)
  * GroupByThread - conversations with expandable threads (ThreadId from References/In-Reply-To/Message-ID)
  * GroupBySender - groups by sender email/name

- EmailTreeModel thread support:
  * ThreadItem type with expand/collapse
  * ThreadId extraction via ThreadUtils (References > In-Reply-To > Message-ID)
  * Double-click thread node toggles expansion
  * Threads sorted by newest email first, emails within thread oldest first

- EmailTreeModel sender grouping:
  * Groups by sender name/email
  * Senders sorted by newest email first
  * Emails within group newest first

- MailListView: Added 'Agrupar por remitente' to group-by combo
- MailListView: Double-click thread node toggles expansion (not open mail)
- ThreadUtils: parseReferencesHeader, extractThreadId, generateThreadId
This commit is contained in:
2026-08-25 18:53:51 +02:00
parent fa699b5399
commit 6e6fdf9c21
75 changed files with 25631 additions and 12574 deletions
@@ -655,6 +655,12 @@
"MU",
"VSCBVMNR7M/moc_notificationmanager.cpp",
null
],
[
"/mnt/c/Users/javie/Documents/Codex/2026-08-11/revisar-2/wino-mail-dtkqt/src/utils/threadutils.h",
"MU",
"VSCBVMNR7M/moc_threadutils.cpp",
null
]
],
"HEADER_EXTENSIONS" : [ "h", "hh", "h++", "hm", "hpp", "hxx", "in", "txx" ],
@@ -1065,6 +1071,11 @@
"MU",
null
],
[
"/mnt/c/Users/javie/Documents/Codex/2026-08-11/revisar-2/wino-mail-dtkqt/src/utils/threadutils.cpp",
"MU",
null
],
[
"/mnt/c/Users/javie/Documents/Codex/2026-08-11/revisar-2/wino-mail-dtkqt/thirdparty/tags/src/config.cpp",
"MU",
File diff suppressed because it is too large Load Diff
@@ -138,6 +138,8 @@
/mnt/c/Users/javie/Documents/Codex/2026-08-11/revisar-2/wino-mail-dtkqt/src/ui/templatesmanagerdialog.h
/mnt/c/Users/javie/Documents/Codex/2026-08-11/revisar-2/wino-mail-dtkqt/src/utils/notificationmanager.cpp
/mnt/c/Users/javie/Documents/Codex/2026-08-11/revisar-2/wino-mail-dtkqt/src/utils/notificationmanager.h
/mnt/c/Users/javie/Documents/Codex/2026-08-11/revisar-2/wino-mail-dtkqt/src/utils/threadutils.cpp
/mnt/c/Users/javie/Documents/Codex/2026-08-11/revisar-2/wino-mail-dtkqt/src/utils/threadutils.h
/mnt/c/Users/javie/Documents/Codex/2026-08-11/revisar-2/wino-mail-dtkqt/thirdparty/tags/include/config.hpp
/mnt/c/Users/javie/Documents/Codex/2026-08-11/revisar-2/wino-mail-dtkqt/thirdparty/tags/src/config.cpp
/mnt/c/Users/javie/Documents/Codex/2026-08-11/revisar-2/wino-mail-dtkqt/thirdparty/tags/src/tags_edit.cpp
@@ -137,6 +137,8 @@ wino-mail-qt_autogen/timestamp: /mnt/c/Users/javie/Documents/Codex/2026-08-11/re
/mnt/c/Users/javie/Documents/Codex/2026-08-11/revisar-2/wino-mail-dtkqt/src/ui/templatesmanagerdialog.h \
/mnt/c/Users/javie/Documents/Codex/2026-08-11/revisar-2/wino-mail-dtkqt/src/utils/notificationmanager.cpp \
/mnt/c/Users/javie/Documents/Codex/2026-08-11/revisar-2/wino-mail-dtkqt/src/utils/notificationmanager.h \
/mnt/c/Users/javie/Documents/Codex/2026-08-11/revisar-2/wino-mail-dtkqt/src/utils/threadutils.cpp \
/mnt/c/Users/javie/Documents/Codex/2026-08-11/revisar-2/wino-mail-dtkqt/src/utils/threadutils.h \
/mnt/c/Users/javie/Documents/Codex/2026-08-11/revisar-2/wino-mail-dtkqt/thirdparty/tags/include/config.hpp \
/mnt/c/Users/javie/Documents/Codex/2026-08-11/revisar-2/wino-mail-dtkqt/thirdparty/tags/src/config.cpp \
/mnt/c/Users/javie/Documents/Codex/2026-08-11/revisar-2/wino-mail-dtkqt/thirdparty/tags/src/tags_edit.cpp \
@@ -1764,6 +1766,14 @@ wino-mail-qt_autogen/timestamp: /mnt/c/Users/javie/Documents/Codex/2026-08-11/re
/usr/include/x86_64-linux-gnu/qt6/QtCore/qalgorithms.h:
/usr/include/x86_64-linux-gnu/qt6/QtWidgets/qdialog.h:
/usr/include/x86_64-linux-gnu/qt6/QtCore/qabstractitemmodel.h:
/usr/include/x86_64-linux-gnu/qt6/QtCore/qstringconverter.h:
/usr/include/x86_64-linux-gnu/qt6/QtCore/qabstracteventdispatcher.h:
/usr/include/c++/15/bits/shared_ptr_base.h:
/usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:
@@ -1820,10 +1830,6 @@ wino-mail-qt_autogen/timestamp: /mnt/c/Users/javie/Documents/Codex/2026-08-11/re
/usr/include/c++/15/bits/specfun.h:
/usr/include/x86_64-linux-gnu/qt6/QtCore/qcoreapplication.h:
/usr/include/c++/15/bits/shared_ptr_atomic.h:
/usr/include/c++/15/bits/ranges_algobase.h:
/usr/include/c++/15/bits/ptr_traits.h:
@@ -2042,6 +2048,14 @@ wino-mail-qt_autogen/timestamp: /mnt/c/Users/javie/Documents/Codex/2026-08-11/re
/usr/include/c++/15/bits/streambuf.tcc:
/usr/include/x86_64-linux-gnu/qt6/QtCore/qcoreapplication.h:
/usr/include/c++/15/bits/shared_ptr_atomic.h:
/mnt/c/Users/javie/Documents/Codex/2026-08-11/revisar-2/wino-mail-dtkqt/src/utils/threadutils.h:
/mnt/c/Users/javie/Documents/Codex/2026-08-11/revisar-2/wino-mail-dtkqt/src/utils/threadutils.cpp:
/usr/include/alloca.h:
/usr/lib/x86_64-linux-gnu/cmake/Qt6Gui/Qt6GuiAdditionalTargetInfo.cmake:
@@ -2322,8 +2336,6 @@ wino-mail-qt_autogen/moc_predefs.h:
CMakeFiles/4.2.3/CMakeCXXCompiler.cmake:
/usr/include/c++/15/bits/stl_tempbuf.h:
/usr/lib/x86_64-linux-gnu/cmake/Qt6Widgets/Qt6WidgetsConfigVersionImpl.cmake:
/usr/include/asm-generic/bitsperlong.h:
@@ -2612,10 +2624,6 @@ CMakeFiles/4.2.3/CMakeCXXCompiler.cmake:
/usr/include/c++/15/array:
/usr/include/x86_64-linux-gnu/qt6/QtWidgets/qdialog.h:
/usr/include/x86_64-linux-gnu/qt6/QtCore/qabstractitemmodel.h:
/usr/include/c++/15/bits/codecvt.h:
/mnt/c/Users/javie/Documents/Codex/2026-08-11/revisar-2/wino-mail-dtkqt/src/ui/models/DateGroupProxyModel.cpp:
@@ -2676,6 +2684,8 @@ CMakeFiles/4.2.3/CMakeCXXCompiler.cmake:
/usr/include/c++/15/cstdint:
/usr/include/c++/15/bits/stl_tempbuf.h:
/usr/include/c++/15/bits/stream_iterator.h:
/usr/include/x86_64-linux-gnu/bits/types/error_t.h:
@@ -3128,10 +3138,6 @@ CMakeFiles/4.2.3/CMakeCXXCompiler.cmake:
/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h:
/usr/include/x86_64-linux-gnu/qt6/QtCore/qstringconverter.h:
/usr/include/x86_64-linux-gnu/qt6/QtCore/qabstracteventdispatcher.h:
/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h:
/usr/include/x86_64-linux-gnu/qt6/QtGui/qpen.h:
@@ -1,2 +1,2 @@
CMAKE_PROGRESS_1 = 84
CMAKE_PROGRESS_1 = 85