#ifndef DIRECTORY_NODE_HPP__ #define DIRECTORY_NODE_HPP__ #include #include // // Tree widget item representing a file system directory. // // It renders the directory name in the first column and progress // information in the 2nd column. The progress information consists of // two 64 bit integer values, the 1st in the DisplayRole is the number // of bytes received and the 2nd in the UserRole the total bytes // expected. The progress information is not automatically // maintained, see the Directory class for an example of how to // dynamically maintain the DirectoryNode progress values. The 1st // column also renders a tristate check box that controls the first // column check boxes of child items. // class DirectoryNode final : public QTreeWidgetItem { public: explicit DirectoryNode (QTreeWidgetItem * parent, QString const& name) : QTreeWidgetItem {parent, Type} { setFlags (flags () | Qt::ItemIsUserCheckable | Qt::ItemIsTristate); setText (0, name); setCheckState (0, Qt::Unchecked); // initialize as empty, the owning QTreeWidget must maintain these // progress values setData (1, Qt::DisplayRole, 0ll); // progress in bytes setData (1, Qt::UserRole, 0ll); // expected bytes } bool operator == (QString const& name) const { return name == text (0); } static int const Type {UserType}; }; inline bool operator == (QString const& lhs, DirectoryNode const& rhs) { return rhs == lhs; } #endif