diff options
author | Slávek Banko <slavek.banko@axis.cz> | 2016-03-26 13:50:43 +0100 |
---|---|---|
committer | Slávek Banko <slavek.banko@axis.cz> | 2016-03-26 13:50:43 +0100 |
commit | d62c8c002c51fb7c36487839eeeb4ac89f044dee (patch) | |
tree | bb4d1f5c631ab1f22a3018ba39e6a806035f80fd /part/kxe_treeviewitem.h | |
download | kxmleditor-d62c8c002c51fb7c36487839eeeb4ac89f044dee.tar.gz kxmleditor-d62c8c002c51fb7c36487839eeeb4ac89f044dee.zip |
Initial import of kxmleditor 1.1.4
Diffstat (limited to 'part/kxe_treeviewitem.h')
-rw-r--r-- | part/kxe_treeviewitem.h | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/part/kxe_treeviewitem.h b/part/kxe_treeviewitem.h new file mode 100644 index 0000000..c24b99f --- /dev/null +++ b/part/kxe_treeviewitem.h @@ -0,0 +1,125 @@ +/*************************************************************************** + 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 |