Files
EzUI/sources/PagedListView.cpp

60 lines
1.3 KiB
C++
Raw Normal View History

2026-01-24 22:42:46 +08:00
#include "PagedListView.h"
namespace ezui {
void PagedListView::SetPageInfo(const Controls& items, int pageSize)
{
this->m_pageIndex = 0;
this->m_pageSize = pageSize;
this->m_pageTotal = items.size() / pageSize + (items.size() % pageSize == 0 ? 0 : 1);
this->m_items = items;
this->NextPage();
}
void PagedListView::GetPage(int pageIndex, Controls* outCtls)
{
if (outCtls) {
outCtls->clear();
int beginIndex = (pageIndex - 1) * m_pageSize;
int count = 0;
for (int i = beginIndex; count < m_pageSize && i < m_items.size(); ++i)
{
outCtls->push_back(m_items[i]);
++count;
}
}
}
void PagedListView::Clear() {
__super::Clear();
}
void PagedListView::Clear(bool freeChilds) {
__super::Clear(freeChilds);
this->m_items.clear();
this->m_pageIndex = 0;
this->m_pageTotal = 0;
}
void PagedListView::NextPage()
{
if (m_items.size() <= 0)return;
if ((m_pageIndex + 1) > m_pageTotal)return;
if (NextPaging && NextPaging(this, (m_pageIndex + 1)) == false) {
return;
}
++m_pageIndex;
Controls ctls;
this->GetPage(m_pageIndex, &ctls);
for (auto& it : ctls) {
this->Add(it);
}
this->Invalidate();
}
PagedListView::PagedListView(Object* patentObject):Control(patentObject)
{
}
PagedListView::~PagedListView()
{
}
};