package Directory;
use Qt 2.0;
@ISA = qw(Qt::ListViewItem);
sub new {
my($class, $parent, $filename) = @_;
my $self = $class->SUPER::new($parent);
$self->{'readable'} = 1;
if($filename) {
$self->{'p'} = $parent;
$self->{'f'} = $filename;
} else {
$self->{'p'} = undef;
$self->{'f'} = "/";
}
return $self;
}
sub setOpen {
my $self = shift;
my $o = shift;
if($o && !$self->childCount()) {
my $s = $self->fullName();
unless(-r $s) {
$self->{'readable'} = 0;
return;
}
if(opendir(FILES, $s)) {
my $f;
while(defined($f = readdir(FILES))) {
my $name = "$s/$f";
if($f eq '.' || $f eq '..') {}
elsif(-l $name) {
Qt::ListViewItem->new($self, $f, "Symbolic Link");
} elsif(-d $name) {
Directory->new($self, $f);
} else {
Qt::ListViewItem->new($self, $f, (-f $name) ? "File" : "Special");
}
}
closedir(FILES);
}
}
$self->SUPER::setOpen($o);
}
sub setup {
my $self = shift;
$self->setExpandable(1);
$self->SUPER::setup();
}
sub fullName {
my $self = shift;
my $s;
if($self->{'p'}) {
$s = $self->{'p'}->fullName() . $self->{'f'} . "/";
} else {
$s = "/";
}
return $s;
}
sub text {
my $self = shift;
my $column = shift;
if($column == 0) {
return $self->{'f'};
} elsif($self->{'readable'}) {
return "Directory";
} else {
return "Unreadable Directory";
}
}