25 class TreeItem : public XMLObj {
27 enum Type { Undefined, MapCenter, Branch, Image, Attribute, XLink };
28 enum HideTmpMode { HideNone, HideExport };
30 TreeItem(TreeItem *parent = nullptr);
33 virtual void clear() = 0;
35 // General housekeeping
36 virtual void setModel(VymModel *m);
37 virtual VymModel *getModel();
39 /*! Return number of item, as it would be after it would have been appended.
40 This is used to notify view about layout changes before model is modified.
42 virtual int getRowNumAppend(TreeItem *child);
44 virtual void appendChild(TreeItem *child);
45 virtual void removeChild(int row);
47 virtual TreeItem *child(int row);
48 virtual int childCount() const;
49 virtual int childNumber() const;
50 virtual int columnCount() const;
51 virtual int branchCount() const;
52 virtual int imageCount() const;
53 virtual int xlinkCount() const;
54 virtual int attributeCount() const;
56 virtual int row() const;
58 virtual TreeItem *parent();
59 virtual bool isChildOf(TreeItem *ti);
61 /*! Return number of item in parent by type,
62 e.g. first branch has number 0 */
63 virtual int childNum(); //! Return number of item in list of all children
64 virtual int num(); //! Return number of item by type
65 virtual int num(TreeItem *item); //! Return number of item by type
71 virtual void setType(const Type t);
72 virtual Type getType();
73 virtual bool isBranchLikeType() const;
74 virtual QString getTypeName();
77 virtual QVariant data(int column) const;
81 QColor backgroundColor;
84 virtual void setHeading(const VymText &vt);
85 virtual void setHeadingPlainText(const QString &s);
86 Heading getHeading() const;
87 virtual QString getHeadingText();
89 getHeadingStd() const; //! convenience function used for debugging
91 getHeadingPlain() const; //! Some views or methods can't cope with RichText
92 virtual QString getHeadingPlainWithParents(
93 uint numberOfParents); //! Show also some of the parents
94 virtual QString getHeadingDepth();
96 setHeadingColor(QColor color); //! Set color of heading. In BranchItem
97 //! overloaded to update QGraphicsView
98 virtual QColor getHeadingColor(); //! Returns color of heading
99 virtual void setBackgroundColor(
100 QColor color); //! Set color of frame brush, if LMO exists for item
106 void setURL(const QString &url); //! Set URL
107 QString getURL(); //! Get URL
113 void setVymLink(const QString &url); //! Set URL
114 QString getVymLink(); //! Get URL
120 void toggleTarget(); //! Toggle target status
121 bool isTarget(); //! Returns true if item is is a target
128 virtual bool clearNote();
129 virtual bool hasEmptyNote();
130 virtual bool setNote(const VymText &vt); // FIXME-3 setNote is called for
131 // every select or so???
132 virtual bool setNote(const VymNote &vn);
134 virtual VymNote getNote();
135 virtual QString getNoteASCII(const QString &indent,
136 const int &width); // returns note (ASCII)
137 virtual QString getNoteASCII(); // returns note (ASCII)
140 FlagRow standardFlags;
145 virtual void activateStandardFlagByName(const QString &flag);
146 virtual void deactivateStandardFlagByName(const QString &flag);
147 virtual void deactivateAllStandardFlags();
149 Flag *findFlagByUid(const QUuid &uid);
151 /*! \brief Toggle a Flag
152 If master is not NULL,, only one Flag from FlagRow master may
153 be active simultanously, the others get deactivated.
155 // virtual void toggleFlag(const QString &name, bool useGroups = true);
156 Flag *toggleFlagByUid(const QUuid &uid, bool useGroups = true);
157 virtual void toggleSystemFlag(const QString &flag, FlagRow *master = NULL);
158 virtual bool hasActiveFlag(const QString &flag);
159 virtual bool hasActiveSystemFlag(const QString &flag);
160 QList<QUuid> activeFlagUids();
162 virtual QList<QUuid> activeSystemFlagUids();
164 virtual bool canMoveDown();
165 virtual bool canMoveUp();
172 virtual ulong getID();
173 virtual void setUuid(const QString &id);
174 virtual QUuid getUuid();
176 // Navigation and selection
177 virtual TreeItem *getChildNum(const int &n);
178 virtual BranchItem *getFirstBranch();
179 virtual BranchItem *getLastBranch();
180 virtual ImageItem *getFirstImage();
181 virtual ImageItem *getLastImage();
183 /*! Get next branch after current branch. Return NULL if there is no
185 virtual BranchItem *getNextBranch(BranchItem *currentBranch);
187 virtual BranchItem *getBranchNum(const int &n);
188 virtual BranchObj *getBranchObjNum(const int &n);
190 virtual ImageItem *getImageNum(const int &n);
191 virtual FloatImageObj *getImageObjNum(const int &n);
193 virtual AttributeItem *getAttributeNum(const int &n);
194 virtual AttributeItem *getAttributeByKey(const QString &k);
196 virtual XLinkItem *getXLinkItemNum(const int &n);
197 virtual XLinkObj *getXLinkObjNum(const int &n);
200 bool hideExport; //! Hide this item in export
201 bool hidden; //! Hidden in export if true
203 virtual void setHideTmp(HideTmpMode);
204 virtual bool hasHiddenExportParent();
205 virtual void setHideInExport(bool); // set export of object (and children)
206 virtual bool hideInExport();
207 virtual bool isHidden();
209 updateVisibility(); //! Sets visibility in LinkableMapObj, if existing
211 virtual QString getGeneralAttr();
216 QList<TreeItem *> childItems;
217 QList<QVariant> itemData; // Heading for TreeEditor in first column
218 TreeItem *parentItem;
220 /*! Set rootItem (does not change, needed for some quick checks
221 e.g. if some branch is mapCenter and isChildOf */
230 int attributeCounter;