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