52 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
		
		
			
		
	
	
			52 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
|   | #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); | ||
|  |   } | ||
|  | 
 | ||
|  |   static int constexpr Type {UserType}; | ||
|  | }; | ||
|  | 
 | ||
|  | inline | ||
|  | bool operator == (QString const& lhs, DirectoryNode const& rhs) | ||
|  | { | ||
|  |   return rhs == lhs; | ||
|  | } | ||
|  | 
 | ||
|  | #endif
 |