FemaLocalSoftware/pagingutil.cpp
Lopata PC 9e459078e1 SensorTab all Done
paginationBar Done
2024-12-16 11:38:04 +03:00

85 lines
1.7 KiB
C++

#include "pagingutil.h"
PagingUtil::PagingUtil(QObject* parent)
: QObject(parent)
, totalSize(10)
, sizeofPerPage(2)
, curSelectNumber(1)
{
}
PagingUtil::~PagingUtil() {
}
PagingUtil &PagingUtil::operator=(const PagingUtil &other) {
this->totalSize = other.totalSize;
this->sizeofPerPage = other.sizeofPerPage;
this->curSelectNumber = other.curSelectNumber;
return *this;
}
int PagingUtil::getTotalSize() const {
return totalSize;
}
void PagingUtil::setTotalSize(int size) {
totalSize = size;
pre2ReCacheNumbers();
}
int PagingUtil::getSizeofPerPage() const {
return sizeofPerPage;
}
void PagingUtil::setSizeofPerPage(int size) {
Q_ASSERT(size > 0);
sizeofPerPage = size;
pre2ReCacheNumbers();
}
void PagingUtil::numberSelected(int number) {
if (number < 1) {
return;
}
if (number > getPageSize()) {
return;
}
curSelectNumber = number;
pre2ReCacheNumbers();
emit numberSelectChanged();
}
bool PagingUtil::isSelectedNumber(int number) const {
return curSelectNumber == number;
}
int PagingUtil::getPageSize() const {
int pageSize = 1;
if (totalSize != 0) {
pageSize = (totalSize - 1) / sizeofPerPage + 1;
}
return pageSize;
}
void PagingUtil::pre2ReCacheNumbers() {
int oldNumberSize = curCacheNumbers.size();
reCacheNumbers();
if (curCacheNumbers.size() != oldNumberSize) {
emit numberArraySizeChanged();
}
emit numbersChanged();
//check select number when total size changed
auto pageSize = getPageSize();
if (curSelectNumber > pageSize) {
curSelectNumber = pageSize;
emit numberSelectChanged();
}
}