#include "xtreewidgetitem.h" XTreeWidgetItem::XTreeWidgetItem(QTreeWidget *parent, bool group) : QTreeWidgetItem(parent) , isGroup(group) , mCategory(CATEGORY_NONE) { } XTreeWidgetItem::XTreeWidgetItem(QTreeWidgetItem *parent, bool group) : QTreeWidgetItem(parent) , isGroup(group) , mCategory(CATEGORY_NONE) { } void XTreeWidgetItem::SetCategory(TREE_CATEGORY category) { mCategory = category; } TREE_CATEGORY XTreeWidgetItem::GetCategory() { return mCategory; } bool XTreeWidgetItem::operator<(const QTreeWidgetItem &other) const { // Attempt to cast the other item to our custom type. const XTreeWidgetItem* otherItem = dynamic_cast(&other); if (otherItem) { bool thisIsGroup = this->childCount() > 0; bool otherIsGroup = otherItem->childCount() > 0; if (thisIsGroup != otherIsGroup) { return otherIsGroup; // Groups should come before non-groups } } // Fallback to the default string comparison on the current sort column. return QTreeWidgetItem::operator<(other); } XTreeWidgetItem& XTreeWidgetItem::operator=(const XTreeWidgetItem &other) { if (this != &other) { // Copy text and icon for each column. const int colCount = other.columnCount(); for (int i = 0; i < colCount; ++i) { setText(i, other.text(i)); setIcon(i, other.icon(i)); } // Copy custom members. this->isGroup = other.isGroup; } return *this; }