52 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			52 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | #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 |