1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
|
package DomItem;
use strict;
use warnings;
use QtCore4;
use QtGui4;
use Scalar::Util qw(reftype);
# [0]
sub domNode() {
my ( $self ) = @_;
return $self->{domNode};
}
sub setDomNode {
my ( $self, $val ) = @_;
return $self->{domNode} = $val;
}
sub childItems() {
return shift->{childItems};
}
sub setChildItems {
my ( $self, $val ) = @_;
return $self->{childItems} = $val;
}
sub parentItem() {
return shift->{parentItem};
}
sub setParentItem {
my ( $self, $val ) = @_;
return $self->{parentItem} = $val;
}
sub rowNumber() {
return shift->{rowNumber};
}
sub setRowNumber {
my ( $self, $val ) = @_;
return $self->{rowNumber} = $val;
}
# [0]
# [0]
sub new
{
my ($class, $node, $row, $parent) = @_;
my $self = bless {}, $class;
$self->setDomNode( $node );
# [0]
# Record the item's location within its parent.
# [1]
$self->setRowNumber( $row );
$self->setParentItem( $parent );
$self->setChildItems( {} );
return $self;
}
# [1]
# [3]
sub node
{
my ( $self ) = @_;
return $self->domNode;
}
# [3]
# [4]
sub parent
{
my ( $self ) = @_;
return $self->parentItem;
}
# [4]
# [5]
sub child
{
my ( $self, $i ) = @_;
if (defined $self->childItems->{$i}) {
return $self->childItems->{$i};
}
if ($i >= 0 && $i < $self->domNode->childNodes()->count()) {
my $childNode = $self->domNode->childNodes()->item($i);
my $childItem = DomItem->new($childNode, $i, $self);
$self->childItems->{$i} = $childItem;
return $childItem;
}
return 0;
}
# [5]
# [6]
sub row
{
my ( $self ) = @_;
return $self->rowNumber;
}
# [6]
1;
|