#!/usr/bin/perl -w
use Qt 2.0;
#BEGIN { Qt::Application::setColorSpec(Qt::Application::CustomColor) }

package MyWidget;

use Qt 2.0;
import Qt::app;

use CannonField;
use LCDRange;

@ISA = qw(Qt::Widget);

sub new {
    my $self = shift->SUPER::new(@_);

    $self->setMinimumSize(500, 355);

    my $quit = Qt::PushButton->new('Quit', $self, 'quit');
    $quit->setFont(Qt::Font->new('Times', 18, Qt::Font::Bold));

    $app->connect($quit, 'clicked()', 'quit()');

    my $angle = LCDRange->new($self, 'angle');
    $angle->setRange(5, 70);

    my $force = LCDRange->new($self, 'force');
    $force->setRange(10, 50);

    my $shoot = Qt::PushButton->new('Shoot', $self, 'shoot');
    $shoot->setFont(Qt::Font->new('Times', 18, Qt::Font::Bold));

    my $cannonField = CannonField->new($self, 'cannonField');
    $cannonField->setBackgroundColor(Qt::Color->new(250, 250, 200));

    $cannonField->connect($angle, 'valueChanged(int)', 'setAngle(int)');
    $angle->connect($cannonField, 'angleChanged(int)', 'setValue(int)');

    $cannonField->connect($force, 'valueChanged(int)', 'setForce(int)');
    $force->connect($cannonField, 'forceChanged(int)', 'setValue(int)');

    $cannonField->connect($shoot, 'clicked()', 'shoot()');

    my $grid = Qt::GridLayout->new($self, 2, 2, 10);
    $grid->addWidget($quit, 0, 0);
    $grid->addWidget($cannonField, 1, 1);
    $grid->setColStretch(1, 10);

    my $leftBox = Qt::VBoxLayout->new;
    $grid->addLayout($leftBox, 1, 0);
    $leftBox->addWidget($angle);
    $leftBox->addWidget($force);

    my $topBox = Qt::HBoxLayout->new;
    $grid->addLayout($topBox, 0, 1);
    $topBox->addWidget($shoot);
    $topBox->addStretch(1);

    $angle->setValue(60);
    $force->setValue(25);

    return $self;
}

package main;

use Qt 2.0;
import Qt::app;

$w = MyWidget->new;
$w->setGeometry(100, 100, 500, 355);
$app->setMainWidget($w);
$w->show();
exit $app->exec();
