package ConfigDialog; use strict; use warnings; use QtCore4; use QtGui4; use QtCore4::isa qw( Qt::Dialog ); use QtCore4::slots changePage => ['QListWidgetItem *', 'QListWidgetItem *']; use Pages; use ConfigurationPage; use UpdatePage; use QueryPage; sub NEW { shift->SUPER::NEW(); my $contentsWidget = Qt::ListWidget(); this->{contentsWidget} = $contentsWidget; $contentsWidget->setViewMode(Qt::ListView::IconMode()); $contentsWidget->setIconSize(Qt::Size(96, 84)); $contentsWidget->setMovement(Qt::ListView::Static()); $contentsWidget->setMaximumWidth(128); $contentsWidget->setSpacing(12); my $pagesWidget = Qt::StackedWidget(); this->{pagesWidget} = $pagesWidget; $pagesWidget->addWidget(ConfigurationPage()); $pagesWidget->addWidget(UpdatePage()); $pagesWidget->addWidget(QueryPage()); my $closeButton = Qt::PushButton(this->tr('Close')); createIcons(); $contentsWidget->setCurrentRow(0); this->connect($closeButton, SIGNAL 'clicked()', this, SLOT 'close()'); my $horizontalLayout = Qt::HBoxLayout(); $horizontalLayout->addWidget($contentsWidget); $horizontalLayout->addWidget($pagesWidget, 1); my $buttonsLayout = Qt::HBoxLayout(); $buttonsLayout->addStretch(1); $buttonsLayout->addWidget($closeButton); my $mainLayout = Qt::VBoxLayout(); $mainLayout->addLayout($horizontalLayout); $mainLayout->addStretch(1); $mainLayout->addSpacing(12); $mainLayout->addLayout($buttonsLayout); this->setLayout($mainLayout); this->setWindowTitle(this->tr('Config Dialog')); } sub createIcons { my $contentsWidget = this->{contentsWidget}; my $configButton = Qt::ListWidgetItem($contentsWidget); $configButton->setIcon(Qt::Icon('images/config.png')); $configButton->setText(this->tr('Configuration')); $configButton->setTextAlignment(Qt::AlignHCenter()); $configButton->setFlags(Qt::ItemIsSelectable() | Qt::ItemIsEnabled()); my $updateButton = Qt::ListWidgetItem($contentsWidget); $updateButton->setIcon(Qt::Icon('images/update.png')); $updateButton->setText(this->tr('Update')); $updateButton->setTextAlignment(Qt::AlignHCenter()); $updateButton->setFlags(Qt::ItemIsSelectable() | Qt::ItemIsEnabled()); my $queryButton = Qt::ListWidgetItem($contentsWidget); $queryButton->setIcon(Qt::Icon('images/query.png')); $queryButton->setText(this->tr('Query')); $queryButton->setTextAlignment(Qt::AlignHCenter()); $queryButton->setFlags(Qt::ItemIsSelectable() | Qt::ItemIsEnabled()); this->connect($contentsWidget, SIGNAL 'currentItemChanged(QListWidgetItem *, QListWidgetItem *)', this, SLOT 'changePage(QListWidgetItem *, QListWidgetItem*)'); } sub changePage { my ($current, $previous) = @_; if (!$current) { $current = $previous; } this->{pagesWidget}->setCurrentIndex(this->{contentsWidget}->row($current)); } 1;