source: trunk/examples/sql/drilldown/informationwindow.cpp@ 561

Last change on this file since 561 was 561, checked in by Dmitry A. Kuminov, 15 years ago

trunk: Merged in qt 4.6.1 sources.

File size: 5.2 KB
RevLine 
[2]1/****************************************************************************
2**
3** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
[561]4** All rights reserved.
5** Contact: Nokia Corporation ([email protected])
[2]6**
7** This file is part of the examples of the Qt Toolkit.
8**
9** $QT_BEGIN_LICENSE:LGPL$
10** Commercial Usage
11** Licensees holding valid Qt Commercial licenses may use this file in
12** accordance with the Qt Commercial License Agreement provided with the
13** Software or, alternatively, in accordance with the terms contained in
14** a written agreement between you and Nokia.
15**
16** GNU Lesser General Public License Usage
17** Alternatively, this file may be used under the terms of the GNU Lesser
18** General Public License version 2.1 as published by the Free Software
19** Foundation and appearing in the file LICENSE.LGPL included in the
20** packaging of this file. Please review the following information to
21** ensure the GNU Lesser General Public License version 2.1 requirements
22** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
23**
[561]24** In addition, as a special exception, Nokia gives you certain additional
25** rights. These rights are described in the Nokia Qt LGPL Exception
26** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
[2]27**
28** GNU General Public License Usage
29** Alternatively, this file may be used under the terms of the GNU
30** General Public License version 3.0 as published by the Free Software
31** Foundation and appearing in the file LICENSE.GPL included in the
32** packaging of this file. Please review the following information to
33** ensure the GNU General Public License version 3.0 requirements will be
34** met: http://www.gnu.org/copyleft/gpl.html.
35**
[561]36** If you have questions regarding the use of this file, please contact
37** Nokia at [email protected].
[2]38** $QT_END_LICENSE$
39**
40****************************************************************************/
41
42#include "informationwindow.h"
43
44//! [0]
45InformationWindow::InformationWindow(int id, QSqlRelationalTableModel *offices,
46 QWidget *parent)
47 : QDialog(parent)
48{
49//! [0] //! [1]
50 QLabel *locationLabel = new QLabel(tr("Location: "));
51 QLabel *countryLabel = new QLabel(tr("Country: "));
52 QLabel *descriptionLabel = new QLabel(tr("Description: "));
53 QLabel *imageFileLabel = new QLabel(tr("Image file: "));
54
55 createButtons();
56
57 locationText = new QLabel;
58 countryText = new QLabel;
59 descriptionEditor = new QTextEdit;
60//! [1]
61
62//! [2]
63 imageFileEditor = new QComboBox;
64 imageFileEditor->setModel(offices->relationModel(1));
65 imageFileEditor->setModelColumn(offices->relationModel(1)->fieldIndex("file"));
66//! [2]
67
68//! [3]
69 mapper = new QDataWidgetMapper(this);
70 mapper->setModel(offices);
71 mapper->setSubmitPolicy(QDataWidgetMapper::ManualSubmit);
72 mapper->setItemDelegate(new QSqlRelationalDelegate(mapper));
73 mapper->addMapping(imageFileEditor, 1);
74 mapper->addMapping(locationText, 2, "text");
75 mapper->addMapping(countryText, 3, "text");
76 mapper->addMapping(descriptionEditor, 4);
77 mapper->setCurrentIndex(id);
78//! [3]
79
80//! [4]
81 connect(descriptionEditor, SIGNAL(textChanged()),
82 this, SLOT(enableButtons()));
83 connect(imageFileEditor, SIGNAL(currentIndexChanged(int)),
84 this, SLOT(enableButtons()));
85
[561]86 QFormLayout *formLayout = new QFormLayout;
87 formLayout->addRow(locationLabel, locationText);
88 formLayout->addRow(countryLabel, countryText);
89 formLayout->addRow(imageFileLabel, imageFileEditor);
90 formLayout->addRow(descriptionLabel, descriptionEditor);
91
92 QVBoxLayout *layout = new QVBoxLayout;
93 layout->addLayout(formLayout);
94 layout->addWidget(buttonBox);
[2]95 setLayout(layout);
96
97 locationId = id;
98 displayedImage = imageFileEditor->currentText();
99
100 setWindowFlags(Qt::Window);
101 enableButtons(false);
102 setWindowTitle(tr("Office: %1").arg(locationText->text()));
103}
104//! [4]
105
106//! [5]
107int InformationWindow::id()
108{
109 return locationId;
110}
111//! [5]
112
113//! [6]
114void InformationWindow::revert()
115{
116 mapper->revert();
117 enableButtons(false);
118}
119//! [6]
120
121//! [7]
122void InformationWindow::submit()
123{
124 QString newImage(imageFileEditor->currentText());
125
126 if (displayedImage != newImage) {
127 displayedImage = newImage;
128 emit imageChanged(locationId, newImage);
129 }
130
131 mapper->submit();
132 mapper->setCurrentIndex(locationId);
133
134 enableButtons(false);
135}
136//! [7]
137
138//! [8]
139void InformationWindow::createButtons()
140{
141 closeButton = new QPushButton(tr("&Close"));
142 revertButton = new QPushButton(tr("&Revert"));
143 submitButton = new QPushButton(tr("&Submit"));
144
145 closeButton->setDefault(true);
146
147 connect(closeButton, SIGNAL(clicked()), this, SLOT(close()));
148 connect(revertButton, SIGNAL(clicked()), this, SLOT(revert()));
149 connect(submitButton, SIGNAL(clicked()), this, SLOT(submit()));
150//! [8]
151
152//! [9]
[561]153 buttonBox = new QDialogButtonBox(this);
154 buttonBox->addButton(submitButton, QDialogButtonBox::AcceptRole);
[2]155 buttonBox->addButton(revertButton, QDialogButtonBox::ResetRole);
156 buttonBox->addButton(closeButton, QDialogButtonBox::RejectRole);
157}
158//! [9]
159
160//! [10]
161void InformationWindow::enableButtons(bool enable)
162{
163 revertButton->setEnabled(enable);
164 submitButton->setEnabled(enable);
165}
166//! [10]
167
168
Note: See TracBrowser for help on using the repository browser.