treeitem.h
author insilmaril
Fri, 01 May 2009 10:30:29 +0000
changeset 763 8c028a5d9083
parent 762 ffb95cd03156
child 766 7a71a914afdb
permissions -rw-r--r--
add above/below
     1 #ifndef TREEITEM_H
     2 #define TREEITEM_H
     3 
     4 #include <QColor>
     5 #include <QList>
     6 #include <QVariant>
     7 
     8 #include "mapitem.h"
     9 #include "noteobj.h"
    10 #include "xmlobj.h"
    11 
    12 class LinkableMapObj;
    13 class BranchObj;
    14 class BranchItem;
    15 class VymModel;
    16 
    17 class TreeItem:public MapItem
    18 {
    19 public:
    20 	enum Type {Undefined,MapCenter,Branch,Image};
    21 	enum HideTmpMode {HideNone, HideExport};
    22 
    23     TreeItem(const QList<QVariant> &data, TreeItem *parent = 0);
    24     ~TreeItem();
    25 	void init();
    26 
    27 	virtual QString saveToDir (const QString &tmpdir,const QString &prefix, const QPointF& offset);
    28 
    29 
    30 	// General housekeeping
    31 	virtual void setModel (VymModel *m);
    32 	virtual VymModel* getModel();
    33 
    34     virtual void appendChild (TreeItem *child);
    35 	virtual void removeChild (int row);
    36 
    37     virtual TreeItem *child(int row);
    38     virtual int childCount() const;
    39     virtual int childNumber() const;
    40     virtual int columnCount() const;
    41 	virtual int branchCount() const;
    42 	virtual int imageCount() const;
    43 	virtual int xlinkCount() const;
    44 
    45     virtual int row() const;
    46 	virtual int column() const;
    47 	virtual int depth() ;
    48     virtual TreeItem *parent();
    49 
    50 	/*! Return number of item in parent by type, 
    51 	    e.g. first branch has number 0           */
    52 	virtual int childNum();				//! Return number of item in list of all children
    53 	virtual int num();					//! Return number of item by type
    54 	virtual int num (TreeItem *item);	//! Return number of item by type
    55 
    56 	// Accessing data
    57     virtual QVariant data(int column) const;
    58 
    59 protected:
    60 	QColor headingColor;
    61 public:	
    62 	virtual void setHeading (const QString s);
    63 	virtual QString getHeading() const;
    64 	virtual std::string getHeadingStd() const;	//! convenience function used for debugging
    65 	virtual void setHeadingColor(QColor color);	//! Set color of heading. In BranchItem overloaded to update QGraphicsView
    66 	virtual QColor getHeadingColor();			//! Returns color of heading
    67 
    68 protected:
    69 	NoteObj note;
    70 public:	
    71 	virtual void setNote(const QString s);
    72 	virtual QString getNote();
    73 	virtual void setNoteObj(const NoteObj &, bool updateNoteEditor=true);
    74 	virtual NoteObj getNoteObj();			
    75 	virtual QString getNoteASCII(const QString &indent, const int &width); // returns note	(ASCII)
    76     virtual QString getNoteASCII();			// returns note	(ASCII)
    77     virtual QString getNoteOpenDoc();		// returns note	(OpenDoc)
    78 
    79 protected:
    80 	Type type;
    81 public:	
    82 	virtual void setType (const Type t);
    83 	virtual Type getType ();
    84 	virtual bool isBranchLikeType() const;
    85 	virtual QString getTypeName ();
    86 
    87 protected:
    88 	QString objID;					//! id set during load/save currently used for xLinks
    89 public:
    90 	virtual void setID (const QString &s);
    91 	virtual QString getID ();
    92 
    93 	// Navigation and selection
    94 	virtual TreeItem* getChildNum(const int &n);
    95 	virtual BranchItem* getFirstBranch();
    96 	virtual BranchItem* getLastBranch();
    97 
    98 	/*! Get next branch after current branch. Return NULL if there is no
    99 	    next branch */
   100 	virtual BranchItem* getNextBranch(BranchItem* currentBranch);
   101 
   102 	virtual BranchItem* getBranchNum(const int &n);
   103 	virtual BranchObj* getBranchObjNum(const int &n);
   104 	virtual void setLastSelectedBranch();		//! Set myself as last selected in parent
   105 	virtual void setLastSelectedBranch(int i);	//! Set last selected branch directly
   106 	virtual TreeItem* getLastSelectedBranch();
   107 
   108 	virtual void setHideTmp (HideTmpMode);
   109 	virtual bool hasHiddenExportParent ();
   110 	virtual void setHideInExport(bool);		// set export of object (and children)
   111 	virtual bool hideInExport();
   112 	virtual bool isHidden ();		
   113 
   114 	
   115 protected:
   116 	VymModel *model;
   117 
   118     QList<TreeItem*> childItems;
   119     QList<QVariant> itemData;
   120     TreeItem *parentItem;
   121  
   122 	int branchOffset;
   123 	int branchCounter;
   124 	int lastSelectedBranchNum;
   125 
   126 	int imageOffset;
   127 	int imageCounter;
   128 
   129 	bool hideExport;//! Hide this item in export
   130 	bool hidden;	//! Hidden in export if true
   131 };
   132 
   133 #endif