34 std::vector<const SessionItem*> visited_items;
36 auto fun = [&](
const SessionItem* item) { visited_items.push_back(item); };
40 EXPECT_TRUE(visited_items.empty());
43 std::unique_ptr<SessionItem> parent(
new SessionItem);
46 std::vector<const SessionItem*> expected = {parent.get()};
48 EXPECT_EQ(visited_items, expected);
56 visited_items.clear();
59 expected = {parent.get(), child1, child2};
60 EXPECT_EQ(visited_items, expected);
67 std::vector<const SessionItem*> visited_items;
71 visited_items.push_back(item);
76 std::unique_ptr<SessionItem> parent(
new SessionItem);
84 std::vector<const SessionItem*> expected = {parent.get()};
86 EXPECT_EQ(visited_items, expected);
103 std::vector<const SessionItem*> visited_items;
104 auto fun = [&](
const SessionItem* item) { visited_items.push_back(item); };
109 std::vector<const SessionItem*> expected = {model.
rootItem(), parent1, child1, child2, parent2};
110 EXPECT_EQ(visited_items, expected);
165 std::vector<std::string>({
"default_tag",
"property_tag"}));
314 std::vector<SessionItem*> data = {
nullptr, item0, item1, item2, item0, item2,
nullptr};
315 std::vector<SessionItem*> expected = {item0, item1, item2};
325 std::vector<SessionItem*> data = {
nullptr, item0, item1, item2, item0, item1, item2,
nullptr};
327 EXPECT_EQ(Utils::CastedItems<PropertyItem>(data), std::vector<PropertyItem*>({item1, item1}));
Item to carry concrete editable entity (e.g.
The main object representing an editable/displayable/serializable entity.
void registerTag(const TagInfo &tagInfo, bool set_as_default=false)
Registers tag to hold items under given name.
bool insertItem(SessionItem *item, const TagRow &tagrow)
Insert item into given tag under the given row.
Main class to hold hierarchy of SessionItem objects.
SessionItem * rootItem() const
Returns root item of the model.
T * insertItem(SessionItem *parent=nullptr, const TagRow &tagrow={})
Inserts item into given parent under given tagrow.
static TagInfo universalTag(std::string name, std::vector< std::string > modelTypes={})
Constructs universal tag intended for unlimited amount of various items.
static TagInfo propertyTag(std::string name, std::string model_type)
Constructs tag intended for single property.
static TagRow append(const std::string &tag_name={})
Returns TagRow corresponding to the append to tag_name.
Vector item with three x,y,z property items.
static const std::string P_X
static const std::string P_Y
TEST_F(ItemUtilsTest, iterateItem)
Simple iteration over item and its children.
const model_type PropertyType
MVVM_MODEL_EXPORT int CopyNumber(const SessionItem *item)
Returns copy number of given item in it's parent hierarchy.
MVVM_MODEL_EXPORT SessionItem * FindNextSibling(SessionItem *item)
Returns next sibling with same tag.
MVVM_MODEL_EXPORT SessionItem * FindNextItemToSelect(SessionItem *item)
Finds next item to select Method is used in the context of next item selection after given item was d...
MVVM_MODEL_EXPORT std::vector< SessionItem * > SinglePropertyItems(const SessionItem &item)
Returns vector of children representing property items.
MVVM_MODEL_EXPORT void iterate(SessionItem *item, const std::function< void(SessionItem *)> &fun)
Iterates through item and all its children.
MVVM_MODEL_EXPORT std::vector< SessionItem * > UniqueItems(const std::vector< SessionItem * > &items)
Returns vector with duplicates and 'nullptr' filtered out.
MVVM_MODEL_EXPORT void iterate_if(const SessionItem *item, const std::function< bool(const SessionItem *)> &fun)
Iterates through all model indices and calls user function.
MVVM_MODEL_EXPORT std::vector< SessionItem * > TopLevelItems(const SessionItem &item)
Returns vector of children representing top level items.
MVVM_MODEL_EXPORT std::vector< std::string > RegisteredUniversalTags(const SessionItem &item)
Returns vector of strings containing all registered universal tags of the given item.
MVVM_MODEL_EXPORT bool HasTag(const SessionItem &item, const std::string &tag)
Returns true if given item has registered tag.
MVVM_MODEL_EXPORT std::vector< std::string > RegisteredTags(const SessionItem &item)
Returns vector of strings containing all registered tags of the given item.
std::vector< T * > CastedItems(const std::vector< SessionItem * > &items)
Returns vector of items casted to given type.
MVVM_MODEL_EXPORT bool IsItemAncestor(const SessionItem *item, const SessionItem *candidate)
Returns true if 'candidate' is one of ancestor of given item.
MVVM_MODEL_EXPORT SessionItem * FindPreviousSibling(SessionItem *item)
Returns previous sibling with same tag.
MVVM_MODEL_EXPORT bool IsSinglePropertyTag(const SessionItem &item, const std::string &tag)
Returns true if given item has registered tag, and it belongs to single property.
materialitems.h Collection of materials to populate MaterialModel.