2015-12-24 06:41:05 -05:00
|
|
|
#ifndef DIRECTORY_NODE_HPP__
|
|
|
|
#define DIRECTORY_NODE_HPP__
|
|
|
|
|
|
|
|
#include <QTreeWidgetItem>
|
|
|
|
#include <QString>
|
|
|
|
|
|
|
|
//
|
|
|
|
// 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);
|
|
|
|
}
|
|
|
|
|
2016-04-30 20:40:51 -04:00
|
|
|
static int constexpr Type {UserType};
|
2015-12-24 06:41:05 -05:00
|
|
|
};
|
|
|
|
|
|
|
|
inline
|
|
|
|
bool operator == (QString const& lhs, DirectoryNode const& rhs)
|
|
|
|
{
|
|
|
|
return rhs == lhs;
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|