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