feat: IMAP sync incremental + Account Setup Wizard + robust FETCH parser

- ImapSynchronizer::syncFolder(): detecta eliminados (UIDs locales no en servidor), fetch nuevos (sinceUid), actualiza flags (FLAGS batch)
- fetchAllUids(): SELECT + SEARCH ALL para lista completa UIDs servidor
- parseAndUpdateFlags(): FETCH FLAGS en lotes 100, update DB si cambió read/flagged
- AccountSetupDialog: integra ConnectionWizard para IMAP/POP3 con test de conexión real
- IMAP FETCH parser robusto: logging respuesta servidor + fallback UID-by-UID
- Fix: FETCH failed logging muestra first/last UID + respuesta truncada
This commit is contained in:
2026-08-17 15:34:49 +02:00
parent 364624aada
commit a004bdd60f
94 changed files with 19408 additions and 1047 deletions
+14 -3
View File
@@ -42,6 +42,14 @@ private slots:
void onProgressChanged(int percent);
void onStatusMessage(const QString &msg);
// Slots for embedded compose view
void onEmbeddedSendRequested(const QString &to, const QString &cc, const QString &bcc,
const QString &subject, const QString &body,
const QDateTime &scheduleTime,
const QString &fromAddress,
const QStringList &attachmentPaths);
void onEmbeddedDiscardRequested();
void onEmbeddedDetachRequested(QWidget *widget);
private:
void setupUI();
void setupSidebar();
@@ -68,6 +76,9 @@ private:
QTreeView *m_folderTree;
MailListView *m_mailListView;
ReaderView *m_emailViewer;
QStackedWidget *m_viewerStack;
QWidget *m_placeholderWidget;
ComposeView *m_embeddedComposeView;
// Other pages
ComposeView *m_composeView;
@@ -78,12 +89,12 @@ private:
// Services & Models
FolderListModel *m_folderModel;
EmailListModel *m_emailModel;
AccountService *m_accountService;
MailService *m_mailService;
AccountService *m_accountService = nullptr;
MailService *m_mailService = nullptr;
QToolBar *m_toolBar;
int m_currentFolderId;
int m_currentMailId;
QProgressBar *m_progressBar;
};
};