#!/usr/bin/perl -w
use KDE;
import KDE::app;

package TopLevel;
use KDE;
import KDE::app;

use Qt::slots 'pannerHasChanged()', 'okPressed()';

@ISA = qw(Qt::Widget);

sub new {
    my $self = shift->SUPER::new(@_);
    $self->setCaption("KPanner class test");
    $self->setMinimumSize(300, 200);
    my $panner = $self->{'panner'} =
	new KDE::Panner($self, "_panner", KDE::Panner::O_HORIZONTAL, 50);
    my $panner1 = $self->{'panner1'} =
	new KDE::Panner($panner->child1, "_panner1",
			KDE::Panner::O_VERTICAL, 50);
    $panner->resize(300, 200);
    $panner->move(0, 0);
    my $box = $self->{'box'} =
	new Qt::ListBox($panner1->child1, "_list");
    $box->insertItem("Hi, I am a listbox", -1);
    my $e = $self->{'e'} =
	new Qt::MultiLineEdit($panner->child0, "_edit");
    my $ok = $self->{'ok'} =
	new Qt::PushButton("Clickme", $panner1->child0, "_ok");
    my $cancel = $self->{'cancel'} =
	new Qt::PushButton("Exitme", $panner1->child0, "_cancel");
    $ok->resize(80, 25);
    $cancel->resize(80, 25);
    $self->connect($ok, 'clicked()', 'okPressed()');
    $app->connect($cancel, 'clicked()', 'quit()');
    $self->connect($panner, 'positionChanged()', 'pannerHasChanged()');
    $self->connect($panner1, 'positionChanged()', 'pannerHasChanged()');
    $self->resize(400, 300);
    $panner->setLimits(50, 250);
    $panner1->setLimits(50, -50);

    return $self;
}

sub pannerHasChanged {
    shift->resizeEvent(undef);
}

sub okPressed {
    shift->{'panner'}->setAbsSeparator(70);
}

sub resizeEvent {
    my $self = shift;
    my($panner, $panner1, $e, $ok, $cancel, $box) =
	@$self{'panner', 'panner1', 'e', 'ok', 'cancel', 'box'};
    $panner->setGeometry(5, 5, $self->width - 10, $self->height - 10);
    $panner1->resize($panner->child1->width, $panner->child1->height);
    $e->setGeometry(0, 0, $panner->child0->width, $panner->child0->height);
    $box->setGeometry(0, 0, $panner1->child1->width, $panner1->child1->height);
    $ok->setGeometry(0, 0, $panner1->child0->width, 25);
    $cancel->setGeometry(0, $panner1->child0->height - 25,
	$panner1->child0->width, 25);
}

package main;

$toplevel = new TopLevel(undef, "test");
$app->setMainWidget($toplevel);
$toplevel->show;
$app->exec;
