/usr/local/CPAN/Qt/InformationWindow.pm
package InformationWindow;
use strict;
use warnings;
use QtCore4;
use QtGui4;
use QtSql4;
# [0]
use QtCore4::isa qw( Qt::Dialog );
use QtCore4::signals
imageChanged => ['int', 'const QString &'];
# [0]
# [1]
use QtCore4::slots
revert => [],
submit => [],
enableButtons2 => [],
enableButtons => ['bool'];
# [1]
# [0]
sub NEW {
my ($class, $id, $offices, $parent) = @_;
$class->SUPER::NEW($parent);
# [0] //! [1]
my $locationLabel = Qt::Label(this->tr('Location: '));
my $countryLabel = Qt::Label(this->tr('Country: '));
my $descriptionLabel = Qt::Label(this->tr('Description: '));
my $imageFileLabel = Qt::Label(this->tr('Image file: '));
this->createButtons();
this->{locationText} = Qt::Label();
this->{countryText} = Qt::Label();
this->{descriptionEditor} = Qt::TextEdit();
# [1]
# [2]
this->{imageFileEditor} = Qt::ComboBox();
this->{imageFileEditor}->setModel($offices->relationModel(1));
this->{imageFileEditor}->setModelColumn($offices->relationModel(1)->fieldIndex('file'));
# [2]
# [3]
this->{mapper} = Qt::DataWidgetMapper(this);
this->{mapper}->setModel($offices);
this->{mapper}->setSubmitPolicy(Qt::DataWidgetMapper::ManualSubmit());
this->{mapper}->setItemDelegate(Qt::SqlRelationalDelegate(this->{mapper}));
this->{mapper}->addMapping(this->{imageFileEditor}, 1);
this->{mapper}->addMapping(this->{locationText}, 2, Qt::ByteArray('text'));
this->{mapper}->addMapping(this->{countryText}, 3, Qt::ByteArray('text'));
this->{mapper}->addMapping(this->{descriptionEditor}, 4);
this->{mapper}->setCurrentIndex($id);
# [3]
# [4]
this->connect(this->{descriptionEditor}, SIGNAL 'textChanged()',
this, SLOT 'enableButtons2()');
this->connect(this->{imageFileEditor}, SIGNAL 'currentIndexChanged(int)',
this, SLOT 'enableButtons2()');
my $layout = Qt::GridLayout();
$layout->addWidget($locationLabel, 0, 0, Qt::AlignLeft() | Qt::AlignTop());
$layout->addWidget($countryLabel, 1, 0, Qt::AlignLeft() | Qt::AlignTop());
$layout->addWidget($imageFileLabel, 2, 0, Qt::AlignLeft() | Qt::AlignTop());
$layout->addWidget($descriptionLabel, 3, 0, Qt::AlignLeft() | Qt::AlignTop());
$layout->addWidget(this->{locationText}, 0, 1);
$layout->addWidget(this->{countryText}, 1, 1);
$layout->addWidget(this->{imageFileEditor}, 2, 1);
$layout->addWidget(this->{descriptionEditor}, 3, 1);
$layout->addWidget(this->{buttonBox}, 4, 0, 1, 2);
this->setLayout($layout);
this->{locationId} = $id;
this->{displayedImage} = this->{imageFileEditor}->currentText();
this->setWindowFlags(Qt::Window());
this->enableButtons($0);
this->setWindowTitle(sprintf this->tr('Office: %s'), this->{locationText}->text());
this->resize(320, this->sizeHint()->height());
}
# [4]
# [5]
sub id
{
return this->{locationId};
}
# [5]
# [6]
sub revert
{
this->{mapper}->revert();
this->enableButtons(0);
}
# [6]
# [7]
sub submit
{
my $newImage = this->{imageFileEditor}->currentText();
if (this->{displayedImage} ne $newImage) {
this->{displayedImage} = $newImage;
emit imageChanged(this->{locationId}, $newImage);
}
this->{mapper}->submit();
this->{mapper}->setCurrentIndex(this->{locationId});
this->enableButtons(0);
}
# [7]
# [8]
sub createButtons
{
this->{closeButton} = Qt::PushButton(this->tr('&Close'));
this->{revertButton} = Qt::PushButton(this->tr('&Revert'));
this->{submitButton} = Qt::PushButton(this->tr('&Submit'));
this->{closeButton}->setDefault(1);
this->connect(this->{closeButton}, SIGNAL 'clicked()', this, SLOT 'close()');
this->connect(this->{revertButton}, SIGNAL 'clicked()', this, SLOT 'revert()');
this->connect(this->{submitButton}, SIGNAL 'clicked()', this, SLOT 'submit()');
# [8]
# [9]
this->{buttonBox} = Qt::DialogButtonBox();
this->{buttonBox}->addButton(this->{submitButton}, Qt::DialogButtonBox::ResetRole());
this->{buttonBox}->addButton(this->{revertButton}, Qt::DialogButtonBox::ResetRole());
this->{buttonBox}->addButton(this->{closeButton}, Qt::DialogButtonBox::RejectRole());
}
# [9]
sub enableButtons2 {
this->enableButtons(1);
}
# [10]
sub enableButtons
{
my ($enable) = @_;
this->{revertButton}->setEnabled($enable);
this->{submitButton}->setEnabled($enable);
}
# [10]
1;