package Window;

use strict;
use warnings;
use QtCore4;
use QtGui4;
use QtCore4::isa qw( Qt::Widget );
use QtCore4::slots
    updateLog => ['int'];
use FileListModel;
    #Qt::TextBrowser *logViewer;

sub NEW
{
    my ($class, $parent) = @_;
    $class->SUPER::NEW( $parent );
    my $model = FileListModel(this);
    $model->setDirPath(Qt::LibraryInfo::location(Qt::LibraryInfo::PrefixPath()));

    my $label = Qt::Label(this->tr('&Directory:'));
    my $lineEdit = Qt::LineEdit();
    $label->setBuddy($lineEdit);

    my $view = Qt::ListView();
    $view->setModel($model);

    my $logViewer = Qt::TextBrowser();
    this->{logViewer} = $logViewer;
    $logViewer->setSizePolicy(Qt::SizePolicy(Qt::SizePolicy::Preferred(), Qt::SizePolicy::Preferred()));

    this->connect($lineEdit, SIGNAL 'textChanged(QString)',
            $model, SLOT 'setDirPath(QString)');
    this->connect($lineEdit, SIGNAL 'textChanged(QString)',
            $logViewer, SLOT 'clear()');
    this->connect($model, SIGNAL 'numberPopulated(int)',
            this, SLOT 'updateLog(int)');
    
    my $layout = Qt::GridLayout();
    $layout->addWidget($label, 0, 0);
    $layout->addWidget($lineEdit, 0, 1);
    $layout->addWidget($view, 1, 0, 1, 2);
    $layout->addWidget($logViewer, 2, 0, 1, 2);

    this->setLayout($layout);
    this->setWindowTitle(this->tr('Fetch More Example'));
}

sub updateLog
{
    my ($number) = @_;
    this->{logViewer}->append(sprintf this->tr('%d items added.'), $number);
}

1;