25 class TreeItem:public XMLObj
28 enum Type {Undefined,MapCenter,Branch,Image,Attribute,XLink};
29 enum HideTmpMode {HideNone, HideExport};
32 TreeItem(const QList<QVariant> &data, TreeItem *parent = 0);
35 virtual void clear()=0;
37 // General housekeeping
38 virtual void setModel (VymModel *m);
39 virtual VymModel* getModel();
42 /*! Return number of item, as it would be after it would have been appended.
43 This is used to notify view about layout changes before model is modified. */
44 virtual int getRowNumAppend (TreeItem *child);
46 virtual void appendChild (TreeItem *child);
47 virtual void removeChild (int row);
49 virtual TreeItem *child(int row);
50 virtual int childCount() const;
51 virtual int childNumber() const;
52 virtual int columnCount() const;
53 virtual int branchCount() const;
54 virtual int imageCount() const;
55 virtual int xlinkCount() const;
56 virtual int attributeCount() const;
58 virtual int row() const;
60 virtual TreeItem *parent();
61 virtual bool isChildOf (TreeItem *ti);
63 /*! Return number of item in parent by type,
64 e.g. first branch has number 0 */
65 virtual int childNum(); //! Return number of item in list of all children
66 virtual int num(); //! Return number of item by type
67 virtual int num (TreeItem *item); //! Return number of item by type
72 virtual void setType (const Type t);
73 virtual Type getType ();
74 virtual bool isBranchLikeType() const;
75 virtual QString getTypeName ();
78 virtual QVariant data (int column) const;
83 QColor backgroundColor;
85 virtual void setHeading (const VymText &vt);
86 virtual void setHeadingPlainText (const QString &s);
87 virtual Heading getHeading() const;
88 virtual QString getHeadingText();
89 virtual std::string getHeadingStd() const; //! convenience function used for debugging
90 virtual QString getHeadingPlain() const; //! Some views or methods can't cope with RichText
91 virtual QString getHeadingPlainWithParents(uint numberOfParents); //! Show also some of the parents
92 virtual QString getHeadingDepth();
93 virtual void setHeadingColor(QColor color); //! Set color of heading. In BranchItem overloaded to update QGraphicsView
94 virtual QColor getHeadingColor(); //! Returns color of heading
95 virtual void setBackgroundColor(QColor color);//! Set color of frame brush, if LMO exists for item
96 virtual QColor getBackgroundColor(); //! Returns color of frame brush, if LMO exists for item
102 void setURL (const QString &url); //! Set URL
103 QString getURL (); //! Get URL
109 void setVymLink (const QString &url); //! Set URL
110 QString getVymLink (); //! Get URL
115 void toggleTarget(); //! Toggle target status
116 bool isTarget(); //! Returns true if item is is a target
122 virtual void clearNote();
123 virtual bool hasEmptyNote();
124 virtual void setNote(const VymText &vt); //FIXME-3 setNote is called for every select or so???
125 virtual void setNote(const VymNote &vn);
127 virtual VymNote getNote();
128 virtual QString getNoteASCII(const QString &indent, const int &width); // returns note (ASCII)
129 virtual QString getNoteASCII(); // returns note (ASCII)
132 FlagRow standardFlags;
135 virtual void activateStandardFlag(const QString &flag);
136 virtual void deactivateStandardFlag(const QString &flag);
137 virtual void deactivateAllStandardFlags();
139 /*! \brief Toggle a Flag
140 If master is not NULL,, only one Flag from FlagRow master may
141 be active simultanously, the others get deactivated.
143 virtual void toggleStandardFlag(const QString &flag, FlagRow *master=NULL);
144 virtual void toggleSystemFlag (const QString &flag, FlagRow *master=NULL);
145 virtual bool hasActiveStandardFlag (const QString &flag);
146 virtual bool hasActiveSystemFlag (const QString &flag);
147 virtual QStringList activeStandardFlagNames();
148 virtual FlagRow* getStandardFlagRow ();
150 virtual QStringList activeSystemFlagNames();
152 virtual bool canMoveDown();
153 virtual bool canMoveUp();
160 virtual uint getID ();
161 virtual void setUuid (const QString &id);
162 virtual QUuid getUuid();
164 // Navigation and selection
165 virtual TreeItem* getChildNum(const int &n);
166 virtual BranchItem* getFirstBranch();
167 virtual BranchItem* getLastBranch();
168 virtual ImageItem* getFirstImage();
169 virtual ImageItem* getLastImage();
171 /*! Get next branch after current branch. Return NULL if there is no
173 virtual BranchItem* getNextBranch(BranchItem* currentBranch);
175 virtual BranchItem* getBranchNum(const int &n);
176 virtual BranchObj* getBranchObjNum(const int &n);
178 virtual ImageItem* getImageNum(const int &n);
179 virtual FloatImageObj* getImageObjNum(const int &n);
181 virtual AttributeItem* getAttributeNum(const int &n);
183 virtual XLinkItem* getXLinkItemNum(const int &n);
184 virtual XLinkObj* getXLinkObjNum(const int &n);
187 bool hideExport; //! Hide this item in export
188 bool hidden; //! Hidden in export if true
190 virtual void setHideTmp (HideTmpMode);
191 virtual bool hasHiddenExportParent ();
192 virtual void setHideInExport(bool); // set export of object (and children)
193 virtual bool hideInExport();
194 virtual bool isHidden ();
195 virtual void updateVisibility(); //! Sets visibility in LinkableMapObj, if existing
197 virtual QString getGeneralAttr();
202 QList<TreeItem*> childItems;
203 QList<QVariant> itemData;
204 TreeItem *parentItem;
206 /*! Set rootItem (does not change, needed for some quick checks
207 e.g. if some branch is mapCenter and isChildOf */
216 int attributeCounter;