/* * @file NotesModel.cpp * @author Robert Borzecki (robert.borzecki@mudita.com) * @date 8 sie 2019 * @brief * @copyright Copyright (C) 2019 mudita.com * @details */ #include "service-db/api/DBServiceAPI.hpp" #include "widgets/NotesItem.hpp" #include "NotesModel.hpp" #include "ListView.hpp" NotesModel::NotesModel(app::Application *app) : DatabaseModel(app) {} NotesModel::~NotesModel() {} void NotesModel::requestRecordsCount() { recordsCount = DBServiceAPI::NotesGetCount(application); // request first and second page if possible if (recordsCount > 0) { DBServiceAPI::NotesGetLimitOffset(application, 0, 3); } } void NotesModel::requestRecords(const uint32_t offset, const uint32_t limit) { DBServiceAPI::NotesGetLimitOffset(application, offset, limit); } bool NotesModel::updateRecords(std::unique_ptr> records, const uint32_t offset, const uint32_t limit, uint32_t count) { #if DEBUG_DB_MODEL_DATA == 1 LOG_DEBUG("Offset: %d, Limit: %d Count:%d", offset, limit, count); for (uint32_t i = 0; i < records.get()->size(); ++i) { LOG_DEBUG("id: %d, filename: %s", records.get()->operator[](i).ID, records.get()->operator[](i).path.c_str()); } #endif DatabaseModel::updateRecords(std::move(records), offset, limit, count); modelIndex = 0; list->onProviderDataUpdate(); return true; } gui::ListItem *NotesModel::getItem(gui::Order order) { auto index = modelIndex; if (order == gui::Order::Previous) { index = records.size() - 1 - modelIndex; } std::shared_ptr note = getRecord(index); modelIndex++; SettingsRecord &settings = application->getSettings(); if (note == nullptr) return nullptr; gui::NotesItem *item = new gui::NotesItem(this, !settings.timeFormat12); if (item != nullptr) { item->setNote(note); item->setID(index); return item; } return nullptr; }