You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
126 lines
4.6 KiB
126 lines
4.6 KiB
9 years ago
|
/***************************************************************************
|
||
|
kxe_treeviewitem.h - description
|
||
|
-------------------
|
||
|
begin : Wed Nov 21 2001
|
||
|
copyright : (C) 2001, 2002, 2003 by The KXMLEditor Team
|
||
|
email : lvanek@users.sourceforge.net
|
||
|
***************************************************************************/
|
||
|
|
||
|
/***************************************************************************
|
||
|
* *
|
||
|
* This program is free software; you can redistribute it and/or modify *
|
||
|
* it under the terms of the GNU General Public License as published by *
|
||
|
* the Free Software Foundation; either version 2 of the License, or *
|
||
|
* (at your option) any later version. *
|
||
|
* *
|
||
|
***************************************************************************/
|
||
|
|
||
|
#ifndef KXE_TREEVIEWITEM_H
|
||
|
#define KXE_TREEVIEWITEM_H
|
||
|
|
||
|
#include <qlistview.h>
|
||
|
#include <qpixmap.h>
|
||
|
#include <qdom.h>
|
||
|
|
||
|
class KListView;
|
||
|
|
||
|
/**
|
||
|
* This is a tree item, which represents one XML node (see @ref QDomNode and its childclasses).
|
||
|
* @short tree item
|
||
|
* @author The KXMLEditor Team
|
||
|
*/
|
||
|
class KXE_TreeViewItem : public QListViewItem
|
||
|
{
|
||
|
public:
|
||
|
|
||
|
KXE_TreeViewItem( const QDomNode & xmlNode, KListView * pParent, QListViewItem* pAfter=NULL);
|
||
|
KXE_TreeViewItem( const QDomNode & xmlNode, QListViewItem * pParent );
|
||
|
KXE_TreeViewItem( const QDomNode & xmlNode, QListViewItem * pParent, QListViewItem * pAfter );
|
||
|
~KXE_TreeViewItem();
|
||
|
|
||
|
/**
|
||
|
* (Re)sets the texts of the columns of this listitem
|
||
|
* depending on type of corresponding XML node and
|
||
|
* element display mode, which is stored in the configuration
|
||
|
* (@ref KXETreeViewSettings::elemDisplMode).
|
||
|
*/
|
||
|
void setTexts();
|
||
|
|
||
|
/** Returns the corresponding XML node, e.g. the XML node represented by this tree item. */
|
||
|
QDomNode * xmlNode() { return & m_xmlNode; }
|
||
|
|
||
|
/** Returns true, if this tree item is bookmarked (false otherwise). */
|
||
|
bool isBookmarked() const { return m_bBookmarked; }
|
||
|
|
||
|
/** Changes this items bookmark status (see @ref KXE_TreeViewItem::m_bBookmarked) and returns the new one. */
|
||
|
bool toggleBookmark();
|
||
|
|
||
|
/** Returns this items last child or a null pointer if there are no childs at all. */
|
||
|
KXE_TreeViewItem * lastChild() const;
|
||
|
|
||
|
/** Sets this items previous sibling. */
|
||
|
void setPrevSibling( KXE_TreeViewItem * const pPrevSibling ) { m_pPrevSibling = pPrevSibling; }
|
||
|
|
||
|
/** Returns this items previous sibling. */
|
||
|
KXE_TreeViewItem * prevSibling() const { return m_pPrevSibling; }
|
||
|
|
||
|
/**
|
||
|
* Does the same like @ref QListViewItem::itemAbove but the parent items doesn't need to be open.
|
||
|
* Returns this items previous siblings last grand child, if there is one.
|
||
|
* Otherwise it returns this items previous sibling or,
|
||
|
* if there are no sibling above, it returns this items parent or
|
||
|
* a null pointer (if there is no parent).
|
||
|
*/
|
||
|
KXE_TreeViewItem * prevItem();
|
||
|
|
||
|
/**
|
||
|
* Does the same like @ref QListViewItem::itemBelow but the parent items doesn't need to be open.
|
||
|
* Returns a pointer to the next item of this or a null pointer if this is the last item.
|
||
|
* This will be it's first child,
|
||
|
* if there are no childs, it will be the next sibling
|
||
|
* and if there are no siblings below, it will be this' parents next sibling ...
|
||
|
*/
|
||
|
KXE_TreeViewItem * nextItem();
|
||
|
|
||
|
/** Expands this items child tree up to the given level or expands the entire child tree, if iLevel == -1. */
|
||
|
void expandSubTree( int iLevel = -1 );
|
||
|
|
||
|
/** Collapses this items child tree to the given level or collapses the entire child tree, if iLevel == 0. */
|
||
|
void collapseSubTree( int iLevel = 0 );
|
||
|
|
||
|
/** Test, if item in parameter is my direct or indirect child item */
|
||
|
bool isMyChildren(const KXE_TreeViewItem *);
|
||
|
|
||
|
/**
|
||
|
* If the child items aren't created (initialized) yet
|
||
|
* (i.e. if m_bChildsCreated is false), it is done now.
|
||
|
*/
|
||
|
void ensureChildItemsCreated();
|
||
|
/**
|
||
|
* If the grandchilds (child items of this item's childs) aren't created (initialized)
|
||
|
* yet (i.e. if m_bGrandChildsCreated is false), it is done now.
|
||
|
*/
|
||
|
void ensureGrandChildItemsCreated();
|
||
|
|
||
|
/**
|
||
|
* Starts in-place renaming, if the given column is set to be in-place
|
||
|
* renameable in the item's view
|
||
|
*/
|
||
|
virtual void startRename( int iCol );
|
||
|
|
||
|
protected:
|
||
|
|
||
|
QDomNode m_xmlNode;
|
||
|
KXE_TreeViewItem * m_pPrevSibling;
|
||
|
bool m_bBookmarked;
|
||
|
bool m_bChildsCreated;
|
||
|
bool m_bGrandChildsCreated;
|
||
|
|
||
|
private:
|
||
|
|
||
|
void init();
|
||
|
void initChilds();
|
||
|
};
|
||
|
|
||
|
#endif
|