mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-11-11 04:23:29 -08:00
[Logs] Browse room history without filters with paginated infinite scroll (#7531)
* [Logs] Browse room history without filters with paginated infinite scroll * [Logs] Continue pagination when switching log tabs --------- Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
This commit is contained in:
parent
3cf8bdb00e
commit
94e6281d87
7 changed files with 321 additions and 91 deletions
|
|
@ -10,6 +10,7 @@
|
|||
#include "tab.h"
|
||||
|
||||
#include <QString>
|
||||
#include <libcockatrice/protocol/pb/moderator_commands.pb.h>
|
||||
#include <qtmetamacros.h>
|
||||
|
||||
class AbstractClient;
|
||||
|
|
@ -25,6 +26,7 @@ class QWidget;
|
|||
class QGridLayout;
|
||||
class QVBoxLayout;
|
||||
class QTableWidget;
|
||||
class QTabWidget;
|
||||
class Response;
|
||||
class TabSupervisor;
|
||||
|
||||
|
|
@ -48,8 +50,37 @@ private:
|
|||
*buttonGroupBox;
|
||||
QVBoxLayout *mainLayout;
|
||||
QTableWidget *roomTable, *gameTable, *chatTable;
|
||||
QTabWidget *tabManager = nullptr;
|
||||
|
||||
//! The filters of the search in flight, captured when Get was clicked so that
|
||||
//! later pages cannot pick up edits the moderator made after starting it.
|
||||
Command_ViewLogHistory currentQuery;
|
||||
bool hasCurrentQuery = false;
|
||||
//! Newest `log_time` of the first page, sent back as the upper bound of every
|
||||
//! later page so messages logged in the meantime do not shift the window.
|
||||
QString snapshotBefore;
|
||||
//! Identity of the previous page's first row, used to spot a server that ignores
|
||||
//! `offset` and hands back the same page forever.
|
||||
QString lastPageStartKey;
|
||||
int currentOffset = 0;
|
||||
int pageSize = 200;
|
||||
int roomCounter = 0, gameCounter = 0, chatCounter = 0;
|
||||
bool isFetching = false;
|
||||
bool hasMoreResults = false;
|
||||
|
||||
void createDock();
|
||||
[[nodiscard]] int dateRangeForSelection() const;
|
||||
void fetchPage(int offset);
|
||||
void appendChatMessage(QTableWidget *table,
|
||||
int &counter,
|
||||
const QString &time,
|
||||
const QString &senderName,
|
||||
const QString &senderIp,
|
||||
const QString &messageText,
|
||||
const QString &targetId,
|
||||
const QString &targetName,
|
||||
const QString &channel = QString());
|
||||
void checkFetchMore();
|
||||
signals:
|
||||
|
||||
private slots:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue