Commit Graph
23 Commits
Author SHA1 Message Date
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 fdef311257 feat: complete settings view + signatures + signatures DAO + icons
- SettingsView: complete UI with tabs for Accounts, Categories, Rules, Templates, Signatures, General, Appearance
- Categories: QTreeWidget with hierarchical view, color picker, parent categories
- Rules: QListWidget with RuleEditorDialog integration, toggle enabled
- Templates: QListWidget with TemplateEditorDialog integration
- Signatures: QListWidget with SignatureEditorDialog integration
- SignatureDao: full CRUD with default signature support
- common_structs.h: QColor for Category, all structs centralized
- icons.qrc: updated with Linear/Outline/Bold icons from resources
- Category: QColor instead of QString for color
- EmailTreeModel/DateGroupProxyModel: email grouping by date
- MailListView: QTreeView with date grouping combo
- ReaderView: subject frame with shadow, avatar in header, body inside header
- MainWindow: frameless with rounded corners, 1px border, edge resize, no status bar
- icons.qrc: complete icon set from resources/icons/SVG
2026-08-24 10:29:13 +02:00
javier 2281b01f49 feat: email grouping by date + stability fixes
- EmailTreeModel: hierarchical model for grouped email view (QTreeView)
- DateGroupProxyModel: proxy model for date-based grouping logic
- MailListView: migrated from QTableView to QTreeView with grouping support
- ReaderView: subject frame with shadow, avatar moved to header, body inside header
- MainWindow: frameless with rounded corners, 1px border, edge resize, no status bar

- Stability fixes for grouping mode switch:
  * Proper tree cleanup (no double-delete of root)
  * Bounds checking on all array accesses
  * Null pointer checks in index/parent/data methods
  * Date validity checks before grouping
  * Index validation before accessing m_emails
2026-08-24 01:04:00 +02:00
javier 0bb8738607 feat: comprehensive Wino Mail updates
- ReaderView: complete rewrite with CSS styling, headers, attachments, zoom, find, dark mode, image blocking
- Categories: DAO + UI tree widget with colors, nested categories, assignment
- Rules engine: DAO + evaluation + actions (move, mark read, flag, delete, category, forward)
- Templates: DAO + editor + manager with variables support
- Signatures: DAO + manager + auto-per-account + manual selector in compose
- ComposeView: signature combo, template selector, auto-signature on new email
- MainWindow: frameless with rounded corners, 1px border, resize from edges, no status bar
- Database: new tables (Category, MailCategory, Rule, Template, Signature) with indexes
2026-08-23 14:49:58 +02:00
javier 43ccd7bd26 feat: mailio-based POP3 synchronizer (option USE_MAILIO_IMAP)
- Added Pop3SynchronizerMailio using mailio library
- CMake option USE_MAILIO_IMAP controls both IMAP and POP3 mailio synchronizers
- Implements POP3: connect, auth (USER/PASS, XOAUTH2), LIST, RETR, DELE
- SyncFolder: fetches new messages by UID
- XOAUTH2 support for Gmail/Outlook OAuth2 tokens
- Falls back to original Pop3Synchronizer when USE_MAILIO_IMAP=OFF
- Ready to enable with: cmake -DUSE_MAILIO_IMAP=ON
2026-08-18 10:51:09 +02:00
javier f798f7ecc0 feat: mailio-based IMAP synchronizer (option USE_MAILIO_IMAP)
- Added ImapSynchronizerMailio using mailio library (C++17, Boost)
- CMake option USE_MAILIO_IMAP (OFF by default) to avoid Boost dependency
- Fetches Boost + mailio via FetchContent when enabled
- Implements full IMAP: connect, auth (LOGIN/XOAUTH2), LIST, SELECT, FETCH, STORE, APPEND, EXPUNGE
- SyncFolder: detects deletions, fetches new messages, updates flags in batches
- XOAUTH2 support for Gmail/Outlook OAuth2 tokens
- Falls back to original ImapSynchronizer when USE_MAILIO_IMAP=OFF
- Ready to enable with: cmake -DUSE_MAILIO_IMAP=ON
2026-08-18 02:30:23 +02:00
javier e81bb0d5fe Actualización de CMakeLists.txt y composeview (añadido getTableView, manejo de carpeta seleccionada, sync, delete, flag) 2026-07-05 23:20:35 +02:00
javier 4569c174f0 Actualizaciones varias: mejoras en cuenta, sincronización, UI 2026-07-05 10:45:44 +02:00
javier 967231db3b Base: fix compile errors in wino-mail-dtkqt (composeview UI, initializeComposition, startNewEmail, authenticator includes) 2026-06-23 01:34:13 +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
Padrino dcb7c52269 Add unit and integration tests for DAOs, Translator, EventBus, and SyncScheduler (Phase 9 - Testing & QA) 2026-06-04 19:00:31 +02:00
Padrino c5704b78a4 Update: minor adjustments to CMakeLists.txt, ComposePage.qml, emailmanager.cpp, main.cpp 2026-06-04 18:29:16 +02:00
Padrino acaf741eb9 Complete phases 6 and 7: Notifications & System Tray, Background Sync & Scheduling 2026-05-29 22:53:57 +02:00
Padrino 2821647574 Fix compilation errors and implement Phase 6 & 7: NotificationManager and SyncScheduler with real synchronizer integration 2026-05-24 21:01:05 +02:00
Padrino acec320222 Implement basic UI with QML (MailListPage) and batching DbChangeProcessor (Step 3-4 of transition plan) 2026-05-17 01:09:01 +02:00
Padrino e3071a23e0 Paso 2: Implementar sistema de mensajería/eventos con Event Bus y actualizar synchronizers para publicar eventos 2026-05-13 01:18:04 +02:00
Padrino b6c5dea86e Add FolderDao and MailItemDao, update MailItem model to include folderId, fileId, size, messageId 2026-05-12 01:08:09 +02:00
Padrino 7f2e546380 Add AccountDao with CRUD operations 2026-05-12 00:54:37 +02:00
Padrino 2722e40696 Add DatabaseManager singleton with SQLite initialization and basic tables (Account, Folder, MailCopy, Attachment) 2026-05-12 00:29:49 +02:00
Padrino 6022aeafae Add IMAP synchronizer stub, update CMakeLists.txt 2026-05-12 00:26:27 +02:00
Padrino c97740c17b Add Account and Folder models, update CMakeLists.txt with source files, add MailItem implementation 2026-05-12 00:23:13 +02:00
Padrino a1c2b97dee Add translator core, mailitem model, main.cpp, and en translation 2026-05-12 00:14:43 +02:00