/** * @RDE_HEADER@ * manages & represents a row in view and contains children items & events * $Id$ * $HeadURL$ * $Author$ * Created by Mike Wille, SLSE, 2014-10-01 */ #pragma once #include #include "EventList.h" #include "PassiveEventContainer.h" namespace LtsTimelineClassic { class Item; // predefine to use Item in itself using ItemList = QList; /** * @brief manages & represents a row in view and contains children items & events * contains a list of events and is used to describe the tree of the treeview * can be a Player ("BlueRecon 75") or a Group ("Recons") */ class LTSTIMELINECLASSIC_EXPORT Item { // NOT WORKING! JUST PUTS EGLs ON TOP OF EACH OTHER! const EventGraphicList getEventGraphicsRecursive() const; public: // DISALLOW COPY OF ITEM (create a pointer of item instead) Item(const Item &) = delete; Item &operator=(const Item &) = delete; const EventGraphicList getEventGraphics() const; // create active events and group events if they overlap in timeline view old: //void groupEventsRecursive(); /** * @brief creates this class with a user-readable name * @param name user-readable name */ explicit Item(const QString &name, const QString &identifier = QString()); /** * @brief ??? * */ ~Item(); /** * @brief adds a item to this item (for tree view) * @param item item to add to this item */ void addItem(Item *item); bool removeEvent(int eventId); void setEventListChanged(); const QString path() const; /** * @brief triggers the timeline (if it has the command to repaint) to redraw this item - must be called when event data is changed from outside (e.g. event data's end time has changed) */ //void dataChanged(); /** * @brief get event pevcon pointer * @return pevcon pointer of row (/item) */ PassiveEventContainer *getPevcon(); const EventGraphicList getCurrentEGLFromPevcon() const; // .. without recreating one or refresh them /* * @brief sets pevcon pointer * @pevcon new pevcon pointer of row (/item) * void setPevcon(PassiveEventContainer* pevcon);*/ /** * @brief sets item pointer * @parent new item pointer parent */ void setParent(Item *parent); /** * @brief get event name * @return event name of row (/item) */ const QString &getName() const; void setName(const QString &name) { m_name = name; } const QString &getIdentifier() const { return m_identifier; } /** * @brief get event children pointer * @return event children reference of row (/item) */ ItemList *getChildren(); /*/** USE GETFULLEVENTLIST(false) INSTEAD !! * @brief get event list * @return event list of row (/item) */ //EventList getEventList();*/ /** * @brief get event parent pointer * @return event parent pointer of row (/item) */ Item *getParent() const; /** * @brief class which MUST NOT be called by the user * only allow to be called by addEventToItem !!! * @param event event to add to this item */ void addEvent(Event *event); /** * @brief get event list of this item (of ALL event lists of all children if recursive = true) * @param recursive search recursivly in this item and it's children * @param get events that are even hidden ones (which are not marked to be shown) * @return event list with events of all children */ EventList getFullEventList(bool recursive = true, bool getHiddenEvents = false) const; /** * @brief get item list of all items (of ALL items of all children if recursive = true) * @param recursive search recursivly in this item and it's children * @return item list */ ItemList getFullItemList(bool recursive = true) const; /** * @brief returns the item's children at row x * @param row children of which row * @return children of row x */ Item *child(int row) const; /** * @brief returns the row number of the parent's children list of this item * @return row number */ int indexOfParent() const; /* * @brief returns the row count of all this item's children * @return row count * int rowCountOfAllItsChildren() const;*/ /** * @brief get count of children of this item * @return children count of this item */ int childCount() const; int visibleChildCount() const; bool hasVisibleEvents() const; // OLD!!void groupEvents(bool recursive = true); // group events if they overlap in timeline view private: QString m_name; // displayed in the treeview to indicate the player for the user QString m_identifier; ItemList *m_children; // list of all children Item *m_parent; // parent item, 1 level higher PassiveEventContainer *m_pevcon; // every item has to own a pevcon, because no other class can hold scope on an pevcon ! EventList m_eventList; // lsit of all events of the item //EventList m_originalEventList; bool m_eventListChanged; // say that the list has been changed and new event list has to be created when asked }; }