File: ConfigDialog.pm

package info (click to toggle)
qt4-perl 4.5~~svn1145508-2
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 5,144 kB
  • ctags: 5,947
  • sloc: perl: 29,224; cpp: 18,849; xml: 98; makefile: 91; sh: 4
file content (94 lines) | stat: -rw-r--r-- 2,969 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
package ConfigDialog;

use strict;
use warnings;
use blib;

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;