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
@@ -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:
@@ -596,4 +596,6 @@ CMakeFiles/wino-mail-qt.dir/src/ui/maillistview.cpp.o: \
/usr/include/x86_64-linux-gnu/qt6/QtGui/qfontmetrics.h \
/usr/include/x86_64-linux-gnu/qt6/QtGui/QColor \
/usr/include/x86_64-linux-gnu/qt6/QtGui/qcolor.h \
/usr/include/x86_64-linux-gnu/qt6/QtCore/QRect
/usr/include/x86_64-linux-gnu/qt6/QtCore/QRect \
/usr/include/x86_64-linux-gnu/qt6/QtWidgets/QScrollBar \
/usr/include/x86_64-linux-gnu/qt6/QtWidgets/qscrollbar.h
File diff suppressed because it is too large Load Diff