diff options
Diffstat (limited to 'lib/gcstar/GCItemsLists/GCTextLists.pm')
-rw-r--r-- | lib/gcstar/GCItemsLists/GCTextLists.pm | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/gcstar/GCItemsLists/GCTextLists.pm b/lib/gcstar/GCItemsLists/GCTextLists.pm index aaa080b..741d03e 100644 --- a/lib/gcstar/GCItemsLists/GCTextLists.pm +++ b/lib/gcstar/GCItemsLists/GCTextLists.pm @@ -742,6 +742,7 @@ use locale; $self->{secondaryField} = $self->{preferences}->secondarySort; $self->{secondaryIndex} = -1; $self->{addSecondary} = 0; + $self->{numericFields} = []; foreach my $field(@tmpArray) { @@ -767,6 +768,7 @@ use locale; push @columnsType, 'Glib::Double'; $renderer = Gtk2::CellRendererText->new; $attribute = 'text'; + push @{$self->{numericFields}}, $field; } else { @@ -1582,6 +1584,22 @@ use locale; $generated); $self->{originalValue}->{$generated} = $original; $self->{model}->set($iter, $self->{visibleCol}, $nbChildren); + + my %totals; + my $field; + my $childIter = $self->{subModel}->iter_children($subIter); + while ($childIter) + { + for $field(@{$self->{numericFields}}) + { + $totals{$field} += ($self->{subModel}->get($childIter))[$self->{fieldToId}->{$field}]; + } + $childIter = $self->{subModel}->iter_next($childIter); + } + for $field(@{$self->{numericFields}}) + { + $self->{model}->set($iter, $self->{fieldToId}->{$field}, $totals{$field}); + } } sub refreshCounts |