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