#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(std::weak_ptr Item); void sigRefresh(); public slots: void removeItem(const ItemData& item); void addItem(std::shared_ptr item, bool inform = true); void addItems(const std::vector>& itemsIn, bool inform = true); void replaceItems(const std::vector>& items); void updateItems(std::vector items, bool inform = true); void updateItem(const ItemData& item, bool inform = true); void refresh(); private slots: void itemUpdateSlot(ItemData data); }; extern ItemStore globalItems;