// Copyright (c) 2017-2024, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/blob/master/LICENSE.md #include "TestListViewProvider.hpp" #include namespace gui { TestListItem::TestListItem(unsigned int ID, bool deleteByList) : ID(ID) { setMinimumSize(testStyle::item_w, testStyle::item_h); setMaximumSize(testStyle::item_w, testStyle::item_h); this->deleteByList = deleteByList; }; TestListViewProvider::TestListViewProvider() { for (unsigned int i = 0; i < testItemCount; i++) { internalData.push_back(new TestListItem(i, false)); } } TestListViewProvider::~TestListViewProvider() { for (auto item : internalData) { delete item; } internalData.clear(); } unsigned int TestListViewProvider::requestRecordsCount() { return testItemCount; } unsigned int TestListViewProvider::getMinimalItemSpaceRequired() const { return testItemMinimalHeight; } void TestListViewProvider::refreshList() { modelIndex = 0; list->onProviderDataUpdate(); } void TestListViewProvider::requestRecords(const uint32_t offset, const uint32_t limit) { modelIndex = 0; internalOffset = offset; internalLimit = limit; list->onProviderDataUpdate(); } gui::ListItem *TestListViewProvider::getItem(gui::Order order) { unsigned int index = 0; if (order == gui::Order::Previous) { index = internalOffset + internalLimit - 1 - modelIndex; } if (order == gui::Order::Next) { index = internalOffset + modelIndex; } if (index < testItemCount) { if (order == gui::Order::Previous && index < internalOffset) { return nullptr; } if (dataSource == gui::TestListViewDataSource::External) { auto testItem = new TestListItem(index, true); testItem->setMargins(testItemMargins); if (notEqualItems) { testItem->setMinimumSize(testStyle::item_w, testStyle::item_h + testStyle::item_h * index); } modelIndex++; return testItem; } else { if (notEqualItems) { internalData[index]->setMinimumSize(testStyle::item_w, testStyle::item_h + testStyle::item_h * index); } internalData[index]->setVisible(true); internalData[index]->setFocus(false); internalData[index]->clearNavigationItem(gui::NavigationDirection::UP); internalData[index]->clearNavigationItem(gui::NavigationDirection::DOWN); internalData[index]->setMargins(testItemMargins); modelIndex++; return internalData[index]; } } return nullptr; } }; // namespace gui