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
@@ -28587,6 +28587,7 @@ CMakeFiles/wino-mail-qt.dir/src/ui/maillistview.cpp.o
/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
@@ -28614,6 +28615,7 @@ CMakeFiles/wino-mail-qt.dir/src/ui/maillistview.cpp.o
/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