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