summaryrefslogtreecommitdiffstats
path: root/part/kxe_treeviewitem.h
diff options
context:
space:
mode:
Diffstat (limited to 'part/kxe_treeviewitem.h')
-rw-r--r--part/kxe_treeviewitem.h125
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