javier
68d237c873
feat: Pagination/virtualization (fetchMore) for EmailListModel
...
- EmailListModel: QAbstractListModel with canFetchMore/fetchMore
* Batch loading (default 50 emails per fetch)
* Total count query for scrollbar
* TotalCountChanged signal
* Paginated DB queries: findAllPaginated, findByFolderIdPaginated
* Count queries: countAll, countByFolderId
- MailItemDao: new paginated methods
* findAllPaginated(offset, limit, filters...)
* findByFolderIdPaginated(folderId, offset, limit, filters...)
* countAll(filters...), countByFolderId(folderId, filters...)
- MailListView: scroll-triggered fetchMore
* Connects verticalScrollBar valueChanged on both TreeView and ListView
* Triggers fetchMore at 90% scroll threshold
* onRowsInserted updates EmailTreeModel when new emails arrive
* Works in both normal (tree) and compact (list) views
2026-08-25 22:20:06 +02:00
javier
6e6fdf9c21
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
2026-08-25 18:53:51 +02:00
javier
4c4fec7a0a
feat: responsive compact mail view + folder unread badges
...
- CompactMailDelegate: card-based view for narrow panels (<420px)
* Avatar with hash-based color, sender + date (relative format)
* Subject line with attachment icon
* Action buttons: flag, delete, category, more (context menu)
* Unread highlight with light blue background + bold sender
- MailListView: automatic switch between tree/table (wide) and list/cards (narrow)
* QStackedWidget with QTreeView + QListView sharing same proxy model
* resizeEvent threshold at 420px
* Signals forwarded to MainMainWindow for actions
- FolderTreeDelegate: custom paint for folder tree
* Unread count badge (blue pill) right-aligned on folder nodes
* Account nodes bold, folder nodes normal weight
* Proper indentation per depth level
- MailItemDao::countUnreadByFolderId() for real-time unread counts
- MainMainWindow handlers for compact actions (flag, delete, category, more menu)
2026-08-24 23:25:13 +02:00
javier
4569c174f0
Actualizaciones varias: mejoras en cuenta, sincronización, UI
2026-07-05 10:45:44 +02:00
javier
0e9f620fe0
Fix build: synchronize Request API, fix GmailSynchronizer, and migrate UI to Qt6 Widgets
2026-06-17 22:44:27 +02:00