treeitem.h
author insilmaril
Mon, 14 Jun 2010 13:59:17 +0000
changeset 848 e265f07f2173
parent 822 c2ce9944148c
permissions -rw-r--r--
Fixed tmp relink, colored headings in TreeView
     1 #ifndef TREEITEM_H
     2 #define TREEITEM_H
     3 
     4 #include <QColor>
     5 #include <QList>
     6 #include <QVariant>
     7 
     8 #include "flagrow.h"
     9 #include "noteobj.h"
    10 #include "xmlobj.h"
    11 
    12 class AttributeItem;
    13 class BranchObj;
    14 class BranchItem;
    15 class FloatImageObj;
    16 class ImageItem;
    17 class LinkableMapObj;
    18 class QModelIndex;
    19 class VymModel;
    20 class XLinkItem;
    21 class XLinkObj;
    22 
    23 class TreeItem:public XMLObj
    24 {
    25 public:
    26 	enum Type {Undefined,MapCenter,Branch,Image,Attribute,XLink};
    27 	enum HideTmpMode {HideNone, HideExport};
    28 
    29     TreeItem();
    30     TreeItem(const QList<QVariant> &data, TreeItem *parent = 0);
    31     virtual ~TreeItem();
    32 	void init();
    33 
    34 	// General housekeeping
    35 	virtual void setModel (VymModel *m);
    36 	virtual VymModel* getModel();
    37 
    38 
    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. */
    41 	virtual int getRowNumAppend (TreeItem *child);
    42 
    43     virtual void appendChild (TreeItem *child);
    44 	virtual void removeChild (int row);
    45 
    46     virtual TreeItem *child(int row);
    47     virtual int childCount() const;
    48     virtual int childNumber() const;
    49     virtual int columnCount() const;
    50 	virtual int branchCount() const;
    51 	virtual int imageCount() const;
    52 	virtual int xlinkCount() const;
    53 	virtual int attributeCount() const;
    54 
    55     virtual int row() const;
    56 	virtual int depth() ;
    57     virtual TreeItem *parent();
    58 
    59 	/*! Return number of item in parent by type, 
    60 	    e.g. first branch has number 0           */
    61 	virtual int childNum();				//! Return number of item in list of all children
    62 	virtual int num();					//! Return number of item by type
    63 	virtual int num (TreeItem *item);	//! Return number of item by type
    64 
    65 protected:
    66 	Type type;
    67 public:	
    68 	virtual void setType (const Type t);
    69 	virtual Type getType ();
    70 	virtual bool isBranchLikeType() const;
    71 	virtual QString getTypeName ();
    72 
    73 // Accessing data
    74     virtual QVariant data (int column) const;
    75 
    76 
    77 protected:
    78 	QColor headingColor;
    79 public:	
    80 	virtual void setHeading (const QString s);
    81 	virtual QString getHeading() const;
    82 	virtual std::string getHeadingStd() const;	//! convenience function used for debugging
    83 	virtual void setHeadingColor(QColor color);	//! Set color of heading. In BranchItem overloaded to update QGraphicsView
    84 	virtual QColor getHeadingColor();			//! Returns color of heading
    85 
    86 
    87 protected:
    88 	QString url;
    89 public:
    90 	void setURL (const QString &url);			//! Set URL
    91 	QString getURL ();							//! Get URL
    92 
    93 
    94 protected:
    95 	QString vymLink;
    96 public:
    97 	void setVymLink (const QString &url);			//! Set URL
    98 	QString getVymLink ();							//! Get URL
    99 
   100 
   101 protected:
   102 	NoteObj note;
   103 public:	
   104 	virtual void setNote(const QString &s);
   105 	virtual void clearNote();
   106 	virtual QString getNote();
   107 	virtual bool hasEmptyNote();
   108 	virtual void setNoteObj(const NoteObj &); //FIXME-3 setNoteObj is called for every select or so???
   109 
   110 	virtual NoteObj getNoteObj();			
   111 	virtual QString getNoteASCII(const QString &indent, const int &width); // returns note	(ASCII)
   112     virtual QString getNoteASCII();			// returns note	(ASCII)
   113     virtual QString getNoteOpenDoc();		// returns note	(OpenDoc)
   114 
   115 
   116 protected:
   117 	FlagRow standardFlags;
   118 	FlagRow systemFlags;
   119 public:	
   120 	virtual void activateStandardFlag(const QString &flag);
   121 	virtual void deactivateStandardFlag(const QString &flag);
   122 	virtual void deactivateAllStandardFlags();
   123 
   124 	/*! \brief Toggle a Flag 
   125 	    If master is not NULL,, only one Flag from FlagRow master may 
   126 		be active simultanously, the others get deactivated.
   127 	*/	
   128 	virtual void toggleStandardFlag(const QString &flag, FlagRow *master=NULL);
   129 	virtual bool isActiveStandardFlag (const QString &flag);
   130 	virtual QStringList activeStandardFlagNames();
   131 	virtual FlagRow* getStandardFlagRow ();
   132 
   133 	virtual QStringList activeSystemFlagNames();
   134 
   135 	virtual bool canMoveDown();
   136 	virtual bool canMoveUp();
   137 
   138 protected:
   139 	static uint idLast;			// the last used unique ID
   140 	uint id;
   141 public:
   142 	virtual uint getID ();
   143 
   144 	// Navigation and selection
   145 	virtual TreeItem* findID (const uint &n);
   146 	virtual TreeItem* getChildNum(const int &n);
   147 	virtual BranchItem* getFirstBranch();
   148 	virtual BranchItem* getLastBranch();
   149 	virtual ImageItem* getFirstImage();
   150 	virtual ImageItem* getLastImage();
   151 
   152 	/*! Get next branch after current branch. Return NULL if there is no
   153 	    next branch */
   154 	virtual BranchItem* getNextBranch(BranchItem* currentBranch);
   155 
   156 	virtual BranchItem* getBranchNum(const int &n);
   157 	virtual BranchObj* getBranchObjNum(const int &n);
   158 
   159 	virtual ImageItem* getImageNum(const int &n);
   160 	virtual FloatImageObj* getImageObjNum(const int &n);
   161 
   162 	virtual AttributeItem* getAttributeNum(const int &n);
   163 
   164 	virtual XLinkItem* getXLinkNum(const int &n);
   165 	virtual XLinkObj* getXLinkObjNum(const int &n);
   166 
   167 protected:
   168 	bool hideExport;						//! Hide this item in export
   169 	bool hidden;							//! Hidden in export if true
   170 public:
   171 	virtual void setHideTmp (HideTmpMode);
   172 	virtual bool hasHiddenExportParent ();
   173 	virtual void setHideInExport(bool);		// set export of object (and children)
   174 	virtual bool hideInExport();
   175 	virtual bool isHidden ();		
   176 	virtual void updateVisibility();		//! Sets visibility in LinkableMapObj, if existing
   177 
   178 	virtual QString getGeneralAttr();
   179 	
   180 protected:
   181 	VymModel *model;
   182 
   183     QList<TreeItem*> childItems;
   184     QList<QVariant> itemData;
   185     TreeItem *parentItem;
   186 
   187 	/*!  Set rootItem (does not change, needed for quick check 
   188 	     if some branch is mapCenter */
   189 	TreeItem *rootItem;
   190  
   191 	int branchOffset;
   192 	int branchCounter;
   193 	int imageOffset;
   194 	int imageCounter;
   195 
   196 	int attributeOffset;
   197 	int attributeCounter;
   198 
   199 	int xlinkOffset;
   200 	int xlinkCounter;
   201 };
   202 
   203 #endif