8 #include "calendaritem.h"
11 #include <nap/resource.h>
12 #include <nap/resourceptr.h>
14 #include <nap/logger.h>
15 #include <nap/signalslot.h>
16 #include <mathutils.h>
20 class CalendarInstance;
96 bool mAllowFailure =
true;
99 std::unique_ptr<CalendarInstance> mInstance =
nullptr;
135 bool init(const std::
string& name,
bool allowFailure,
CalendarItemList defaultItems, utility::ErrorState& error);
140 const std::
string& getName()
const { assert(!mName.empty());
return mName; }
145 std::string
getPath()
const { assert(!mPath.empty());
return mPath; }
164 void getItems(std::vector<T*>& outItems)
const;
173 void addItem(std::unique_ptr<CalendarItem> item);
192 template<
typename T,
typename... Args>
193 T* addItem(Args&&... args);
201 bool removeItem(
const std::string&
id);
270 template<
typename T,
typename... Args>
275 std::unique_ptr<T> item = std::make_unique<T>(std::forward<Args>(args)...);
280 if (!item->init(error))
282 nap::Logger::error(error.toString());
286 T* item_ptr = item.get();
287 mItems.emplace_back(std::move(item));
295 for (
const auto& item : mItems)
297 T* c_item = rtti_cast<T>(item.get());
298 if (c_item !=
nullptr)
300 outItems.emplace_back(c_item);
Definition: calendar.h:69
std::string mPath
Path to calendar file on disk.
Definition: calendar.h:254
nap::Core & mCore
NAP core.
Definition: calendar.h:49
const OwnedCalendarItemList & getItems() const
Definition: calendar.h:150
std::string getPath() const
Definition: calendar.h:145
std::vector< std::unique_ptr< CalendarItem > > OwnedCalendarItemList
Definition: calendar.h:107
std::string NAPAPI generateUUID()
CalendarItemList mItems
Property: 'Items' default set of calendar items.
Definition: calendar.h:95
void addItem(std::unique_ptr< CalendarItem > item)
Definition: errorstate.h:19
T * findByID(const std::string &id)
Definition: calendar.h:221
Definition: calendar.h:114
CalendarInstance & getInstance() override
Definition: calendar.h:88
Definition: calendar.h:30
Definition: signalslot.h:28
nap::Core & mCore
NAP core.
Definition: calendar.h:255
Signal< const CalendarItem & > itemRemoved
Called when an item is about to be removed.
Definition: calendar.h:249
Definition: calendaritem.h:22
OwnedCalendarItemList mItems
List of unique calendar items.
Definition: calendar.h:252
const CalendarInstance & getInstance() const override
Definition: calendar.h:93
constexpr const char * calendarDirectory
Directory where all calendars are stored.
Definition: calendar.h:22
Definition: templateapp.h:17
Definition: resource.h:19
std::string mName
Calendar name.
Definition: calendar.h:253
std::vector< nap::ResourcePtr< CalendarItem > > CalendarItemList
Definition: calendar.h:21
T * findByTitle(const std::string &title)
Definition: calendar.h:241
Signal< const CalendarItem & > itemAdded
Called when an item is added.
Definition: calendar.h:250