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
This commit is contained in:
2026-08-25 22:20:06 +02:00
parent 6e6fdf9c21
commit 68d237c873
77 changed files with 16718 additions and 18159 deletions
@@ -28537,6 +28537,7 @@ CMakeFiles/wino-mail-qt.dir/src/ui/maillistview.cpp.o: /mnt/c/Users/javie/Docume
/usr/include/x86_64-linux-gnu/qt6/QtWidgets/QLineEdit \
/usr/include/x86_64-linux-gnu/qt6/QtWidgets/QListView \
/usr/include/x86_64-linux-gnu/qt6/QtWidgets/QPushButton \
/usr/include/x86_64-linux-gnu/qt6/QtWidgets/QScrollBar \
/usr/include/x86_64-linux-gnu/qt6/QtWidgets/QStackedWidget \
/usr/include/x86_64-linux-gnu/qt6/QtWidgets/QStyle \
/usr/include/x86_64-linux-gnu/qt6/QtWidgets/QStyleOptionViewItem \
@@ -28564,6 +28565,7 @@ CMakeFiles/wino-mail-qt.dir/src/ui/maillistview.cpp.o: /mnt/c/Users/javie/Docume
/usr/include/x86_64-linux-gnu/qt6/QtWidgets/qlistview.h \
/usr/include/x86_64-linux-gnu/qt6/QtWidgets/qpushbutton.h \
/usr/include/x86_64-linux-gnu/qt6/QtWidgets/qrubberband.h \
/usr/include/x86_64-linux-gnu/qt6/QtWidgets/qscrollbar.h \
/usr/include/x86_64-linux-gnu/qt6/QtWidgets/qsizepolicy.h \
/usr/include/x86_64-linux-gnu/qt6/QtWidgets/qslider.h \
/usr/include/x86_64-linux-gnu/qt6/QtWidgets/qstackedwidget.h \
@@ -42707,10 +42709,6 @@ wino-mail-qt_autogen/GQ6NBGVJMG/moc_accountservice.cpp:
/usr/include/x86_64-linux-gnu/qt6/QtGui/QTextImageFormat:
/usr/include/x86_64-linux-gnu/qt6/QtWidgets/qscrollbar.h:
/usr/include/x86_64-linux-gnu/qt6/QtWidgets/QScrollBar:
/usr/include/x86_64-linux-gnu/qt6/QtWidgets/QGraphicsDropShadowEffect:
/usr/include/x86_64-linux-gnu/qt6/QtGui/QTextDocument:
@@ -42729,6 +42727,10 @@ wino-mail-qt_autogen/GQ6NBGVJMG/moc_accountservice.cpp:
/usr/include/x86_64-linux-gnu/qt6/QtGui/QCloseEvent:
/usr/include/x86_64-linux-gnu/qt6/QtWidgets/qscrollbar.h:
/usr/include/x86_64-linux-gnu/qt6/QtWidgets/QScrollBar:
/usr/include/x86_64-linux-gnu/qt6/QtGui/QCursor:
/usr/include/x86_64-linux-gnu/qt6/QtWidgets/qfiledialog.h: