18 #include "pagination.h"
20 #include <QtCore/QLoggingCategory>
22 using namespace Cutelyst;
24 Q_LOGGING_CATEGORY(C_PAGINATION,
"cutelyst.utils.pagination", QtWarningMsg)
28 if (itemsPerPage <= 0) {
29 qCWarning(C_PAGINATION) <<
"Invalid number of items per page:" << itemsPerPage <<
"failing back to 1";
33 if (currentPage <= 0) {
34 qCWarning(C_PAGINATION) <<
"Invalid current page:" << currentPage <<
"failing back to 1";
39 qCWarning(C_PAGINATION) <<
"Invalid number of page links:" << pageLinks <<
"failing back to 1";
43 insert(QStringLiteral(
"limit"), itemsPerPage);
44 insert(QStringLiteral(
"offset"), (currentPage - 1) * itemsPerPage);
45 insert(QStringLiteral(
"currentPage"), currentPage);
46 insert(QStringLiteral(
"current"), currentPage);
48 int lastPage = (numberOfItems - 1) / itemsPerPage + 1;
49 if (currentPage > lastPage) {
50 currentPage = lastPage;
53 int startPage = (currentPage < pageLinks + 1) ? 1 : currentPage - pageLinks;
54 int endPage = (pageLinks * 2) + startPage;
55 if (lastPage < endPage) {
60 for (
int i = startPage; i <= endPage; ++i) {
63 insert(QStringLiteral(
"enableFirst"), currentPage > 1);
64 insert(QStringLiteral(
"enableLast"), currentPage != lastPage);
66 insert(QStringLiteral(
"lastPage"), lastPage);
67 insert(QStringLiteral(
"numberOfItems"), numberOfItems);
70 Pagination::~Pagination()
77 return value(QStringLiteral(
"limit")).toInt();
82 return value(QStringLiteral(
"offset")).toInt();
87 if (itemsPerPage <= 0) {
88 qCWarning(C_PAGINATION) <<
"Invalid number of items per page:" << itemsPerPage <<
"failing back to 1";
91 if (currentPage <= 0) {
92 qCWarning(C_PAGINATION) <<
"Invalid current page:" << currentPage <<
"failing back to 1";
95 return (currentPage - 1) * itemsPerPage;
100 return value(QStringLiteral(
"currentPage")).toInt();
105 return value(QStringLiteral(
"lastPage")).toInt();
110 return value(QStringLiteral(
"numberOfItems")).toInt();
115 return value(QStringLiteral(
"enableFirst")).toBool();
120 return value(QStringLiteral(
"enableLast")).toBool();
125 return value(QStringLiteral(
"pages")).value<
QVector<int> >();
128 #include "moc_pagination.cpp"
void append(const T &value)
QVariant fromValue(const T &value)