#pragma once #include #include #include "item.h" #include "itemsource.h" #include class ItemStore: public QObject { Q_OBJECT private: std::vector > items_; public: ItemStore(QObject *parent = nullptr); virtual ~ItemStore() {} inline std::vector< std::shared_ptr >* getItems() { return &items_; } std::shared_ptr getItem(uint32_t id); void registerItemSource(ItemSource* source); void store(QJsonObject &json); void clear(); signals: void itemDeleted(ItemData item); void itemAdded(std::weak_ptr Item); void itemUpdated(ItemUpdateRequest update); void sigRefresh(); public slots: void removeItem(const ItemData& item); void addItem(const ItemAddRequest& item); void addItems(const std::vector& itemsIn); void replaceItems(const std::vector>& items); void updateItems(const std::vector& updates); void updateItem(const ItemUpdateRequest& update); void refresh(); private slots: void itemUpdateSlot(ItemUpdateRequest update); }; extern ItemStore globalItems;