#ifndef MACTREEWIDGETITEM_H #define MACTREEWIDGETITEM_H #include #include "arp.h" Q_DECLARE_METATYPE(arp_t*) class MacTreeWidgetItem : public QTreeWidgetItem { public: MacTreeWidgetItem(QTreeWidget* parent, const arp_t &item) : QTreeWidgetItem(parent) { //ulozeni arp informaci setArpData(item); } MacTreeWidgetItem(const QTreeWidgetItem &item) : QTreeWidgetItem(item) { arp_t* oldData = arpData(); arp_t* newData = new arp_t; if (oldData != NULL) Arp::copyArp_t(newData, *oldData); QVariant data; data.setValue(newData); setData(0, Qt::UserRole, data); //ulozeni textu setText(0, newData->arp_ip_src); setText(1, newData->arp_mac_src); setText(2, newData->time.toString("dd.MM.yyyy hh:mm:ss")); } ~MacTreeWidgetItem() { arp_t* oldData = arpData(); if (oldData != NULL) { delete oldData; } } arp_t* arpData() const { return data(0, Qt::UserRole).value(); } void setArpData(const arp_t &item) { arp_t* oldData = arpData(); if (oldData != NULL) { delete oldData; } arp_t* newData = new arp_t; Arp::copyArp_t(newData, item); QVariant data; data.setValue(newData); setData(0, Qt::UserRole, data); //ulozeni textu setText(0, item.arp_ip_src); setText(1, item.arp_mac_src); setText(2, item.time.toString("dd.MM.yyyy hh:mm:ss")); } private: bool operator<(const QTreeWidgetItem &other)const { int column = treeWidget()->sortColumn(); MacTreeWidgetItem macOther = (MacTreeWidgetItem) other; switch(column) { case 0: if (text(0).length() == other.text(0).length()) return text(0) < other.text(0); return text(0).length() < other.text(0).length(); break; case 2: return arpData()->time < macOther.arpData()->time; break; default: return text(column).toLower() < other.text(column).toLower(); } } }; #endif // MACTREEWIDGETITEM_H