Wt examples  4.10.4
Loading...
Searching...
No Matches
Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
FileTreeTableNode Class Reference

A single node in a file tree table. More...

#include <FileTreeTableNode.h>

Inheritance diagram for FileTreeTableNode:
[legend]

Public Member Functions

 FileTreeTableNode (const boost::filesystem::path &path)
 Construct a new node for the given file.
 

Private Member Functions

virtual void populate () override
 Reimplements WTreeNode::populate to read files within a directory.
 
virtual bool expandable () override
 Reimplements WTreeNode::expandable.
 

Static Private Member Functions

static std::unique_ptr< WIconPaircreateIcon (const boost::filesystem::path &path)
 Create the iconpair for representing the path.
 

Private Attributes

boost::filesystem::path path_
 The path.
 

Detailed Description

A single node in a file tree table.

The node manages the details about one file, and if the file is a directory, populates a subtree with nodes for every directory item.

The tree node reimplements Wt::WTreeTableNode::populate() to populate a directory node only when the node is expanded. In this way, only directories that are actually browsed are loaded from disk.

Definition at line 30 of file FileTreeTableNode.h.

Constructor & Destructor Documentation

◆ FileTreeTableNode()

FileTreeTableNode::FileTreeTableNode ( const boost::filesystem::path & path)

Construct a new node for the given file.

Definition at line 22 of file FileTreeTableNode.C.

24 : WTreeTableNode(Wt::widen(path.leaf()), createIcon(path)),
25#else
26 : WTreeTableNode(path.leaf().string(), createIcon(path)),
27#endif
28 path_(path)
29{
30 label()->setTextFormat(TextFormat::Plain);
31
32 if (boost::filesystem::exists(path)) {
33 if (!boost::filesystem::is_directory(path)) {
34 int fsize = (int)boost::filesystem::file_size(path);
35 setColumnWidget(1, std::make_unique<WText>(asString(fsize)));
36 columnWidget(1)->setStyleClass("fsize");
37 } else
38 setSelectable(false);
39
40 std::time_t t = boost::filesystem::last_write_time(path);
41 Wt::WDateTime dateTime = Wt::WDateTime::fromTime_t(t);
42 Wt::WString dateTimeStr = dateTime.toString(Wt::utf8("MMM dd yyyy"));
43
44 setColumnWidget(2, std::make_unique<WText>(dateTimeStr));
45 columnWidget(2)->setStyleClass("date");
46 }
47}
Wt::Auth::Dbo::UserDatabase< AuthInfo > UserDatabase
Definition Session.h:22
boost::filesystem::path path_
The path.
static std::unique_ptr< WIconPair > createIcon(const boost::filesystem::path &path)
Create the iconpair for representing the path.

Member Function Documentation

◆ createIcon()

std::unique_ptr< WIconPair > FileTreeTableNode::createIcon ( const boost::filesystem::path & path)
staticprivate

Create the iconpair for representing the path.

Definition at line 49 of file FileTreeTableNode.C.

50{
51 if (boost::filesystem::exists(path)
52 && boost::filesystem::is_directory(path))
53 return std::make_unique<WIconPair>("icons/yellow-folder-closed.png",
54 "icons/yellow-folder-open.png", false);
55 else
56 return std::make_unique<WIconPair>("icons/document.png",
57 "icons/yellow-folder-open.png", false);
58}

◆ expandable()

bool FileTreeTableNode::expandable ( )
overrideprivatevirtual

Reimplements WTreeNode::expandable.

Definition at line 83 of file FileTreeTableNode.C.

84{
85 if (!populated()) {
86 return boost::filesystem::is_directory(path_);
87 } else
88 return WTreeTableNode::expandable();
89}

◆ populate()

void FileTreeTableNode::populate ( )
overrideprivatevirtual

Reimplements WTreeNode::populate to read files within a directory.

Definition at line 60 of file FileTreeTableNode.C.

61{
62 if (boost::filesystem::is_directory(path_)) {
63 std::set<boost::filesystem::path> paths;
64 boost::filesystem::directory_iterator end_itr;
65
66 for (boost::filesystem::directory_iterator i(path_); i != end_itr; ++i)
67 try {
68 paths.insert(*i);
69 } catch (boost::filesystem::filesystem_error& e) {
70 std::cerr << e.what() << std::endl;
71 }
72
73 for (std::set<boost::filesystem::path>::iterator i = paths.begin();
74 i != paths.end(); ++i)
75 try {
76 addChildNode(std::make_unique<FileTreeTableNode>(*i));
77 } catch (boost::filesystem::filesystem_error& e) {
78 std::cerr << e.what() << std::endl;
79 }
80 }
81}

Member Data Documentation

◆ path_

boost::filesystem::path FileTreeTableNode::path_
private

The path.

Definition at line 39 of file FileTreeTableNode.h.


The documentation for this class was generated from the following files: