Редакция 169 | Редакция 180 | К новейшей редакции | Только различия | Не учитывать пробелы | Содержимое файла | Авторство | Последнее изменение | Открыть журнал | RSS
Редакция 169 | Редакция 179 | ||
---|---|---|---|
1 | 1 | ||
2 | 2 | ||
3 | /****************************************************************************
|
3 | /****************************************************************************
|
4 | **
|
4 | **
|
5 | ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
|
5 | ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
|
6 | ** All rights reserved.
|
6 | ** All rights reserved.
|
7 | ** Contact: Nokia Corporation (qt-info@nokia.com)
|
7 | ** Contact: Nokia Corporation (qt-info@nokia.com)
|
8 | **
|
8 | **
|
9 | ** This file is part of the examples of the Qt Toolkit.
|
9 | ** This file is part of the examples of the Qt Toolkit.
|
10 | **
|
10 | **
|
11 | ** $QT_BEGIN_LICENSE:LGPL$
|
11 | ** $QT_BEGIN_LICENSE:LGPL$
|
12 | ** Commercial Usage
|
12 | ** Commercial Usage
|
13 | ** Licensees holding valid Qt Commercial licenses may use this file in
|
13 | ** Licensees holding valid Qt Commercial licenses may use this file in
|
14 | ** accordance with the Qt Commercial License Agreement provided with the
|
14 | ** accordance with the Qt Commercial License Agreement provided with the
|
15 | ** Software or, alternatively, in accordance with the terms contained in
|
15 | ** Software or, alternatively, in accordance with the terms contained in
|
16 | ** a written agreement between you and Nokia.
|
16 | ** a written agreement between you and Nokia.
|
17 | **
|
17 | **
|
18 | ** GNU Lesser General Public License Usage
|
18 | ** GNU Lesser General Public License Usage
|
19 | ** Alternatively, this file may be used under the terms of the GNU Lesser
|
19 | ** Alternatively, this file may be used under the terms of the GNU Lesser
|
20 | ** General Public License version 2.1 as published by the Free Software
|
20 | ** General Public License version 2.1 as published by the Free Software
|
21 | ** Foundation and appearing in the file LICENSE.LGPL included in the
|
21 | ** Foundation and appearing in the file LICENSE.LGPL included in the
|
22 | ** packaging of this file. Please review the following information to
|
22 | ** packaging of this file. Please review the following information to
|
23 | ** ensure the GNU Lesser General Public License version 2.1 requirements
|
23 | ** ensure the GNU Lesser General Public License version 2.1 requirements
|
24 | ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
24 | ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
25 | **
|
25 | **
|
26 | ** In addition, as a special exception, Nokia gives you certain additional
|
26 | ** In addition, as a special exception, Nokia gives you certain additional
|
27 | ** rights. These rights are described in the Nokia Qt LGPL Exception
|
27 | ** rights. These rights are described in the Nokia Qt LGPL Exception
|
28 | ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
28 | ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
29 | **
|
29 | **
|
30 | ** GNU General Public License Usage
|
30 | ** GNU General Public License Usage
|
31 | ** Alternatively, this file may be used under the terms of the GNU
|
31 | ** Alternatively, this file may be used under the terms of the GNU
|
32 | ** General Public License version 3.0 as published by the Free Software
|
32 | ** General Public License version 3.0 as published by the Free Software
|
33 | ** Foundation and appearing in the file LICENSE.GPL included in the
|
33 | ** Foundation and appearing in the file LICENSE.GPL included in the
|
34 | ** packaging of this file. Please review the following information to
|
34 | ** packaging of this file. Please review the following information to
|
35 | ** ensure the GNU General Public License version 3.0 requirements will be
|
35 | ** ensure the GNU General Public License version 3.0 requirements will be
|
36 | ** met: http://www.gnu.org/copyleft/gpl.html.
|
36 | ** met: http://www.gnu.org/copyleft/gpl.html.
|
37 | **
|
37 | **
|
38 | ** If you have questions regarding the use of this file, please contact
|
38 | ** If you have questions regarding the use of this file, please contact
|
39 | ** Nokia at qt-info@nokia.com.
|
39 | ** Nokia at qt-info@nokia.com.
|
40 | ** $QT_END_LICENSE$
|
40 | ** $QT_END_LICENSE$
|
41 | **
|
41 | **
|
42 | ****************************************************************************/
|
42 | ****************************************************************************/
|
43 | 43 | ||
44 | /*
|
44 | /*
|
45 | delegate.cpp
|
45 | delegate.cpp
|
46 | 46 | ||
47 | A delegate that allows the user to change integer values from the model
|
47 | A delegate that allows the user to change integer values from the model
|
48 | using a spin box widget.
|
48 | using a spin box widget.
|
49 | */
|
49 | */
|
50 | 50 | ||
51 | #include <QtGui>
|
51 | #include <QtGui>
|
52 | 52 | ||
53 | #include "delegate.h"
|
53 | #include "delegate.h"
|
54 | 54 | ||
55 | 55 | ||
56 | //! [0]
|
56 | //! [0]
|
57 | SpinBoxDelegate::SpinBoxDelegate(QObject *parent) |
57 | SpinBoxDelegate::SpinBoxDelegate(QObject *parent) |
58 | : QItemDelegate(parent) |
58 | : QItemDelegate(parent) |
59 | {
|
59 | {
|
60 | }
|
60 | }
|
61 | //! [0]
|
61 | //! [0]
|
62 | 62 | ||
63 | void SpinBoxDelegate::setInctance(QString newInctance){ |
63 | void SpinBoxDelegate::setInctance(QString newInctance){ |
64 | inctance = newInctance; |
64 | inctance = newInctance; |
65 | }
|
65 | }
|
66 | 66 | ||
67 | void SpinBoxDelegate::getItems(){ |
67 | void SpinBoxDelegate::getItems(){ |
68 | QMap <QString, QString> result_map; |
68 | QMap <QString, QString> result_map; |
69 | QSqlQuery q;
|
69 | QSqlQuery q;
|
70 | QString query_str;
|
70 | QString query_str;
|
71 | bool ok; |
71 | bool ok; |
72 | 72 | ||
73 | if (SpinBoxDelegate::inctance.isEmpty()) |
73 | if (SpinBoxDelegate::inctance.isEmpty()) |
74 | {
|
74 | {
|
75 | items.clear(); |
75 | items.clear(); |
76 | return; |
76 | return; |
77 | }
|
77 | }
|
78 | 78 | ||
79 | query_str = tr("select * from `"); |
79 | query_str = tr("select * from `"); |
80 | query_str.append(inctance); |
80 | query_str.append(inctance); |
81 | query_str.append( tr("`")); |
81 | query_str.append( tr("`")); |
82 | 82 | ||
83 | q.prepare(query_str); |
83 | q.prepare(query_str); |
84 | 84 | ||
85 | 85 | ||
86 | ok = q.exec(); |
86 | ok = q.exec(); |
87 | 87 | ||
88 | 88 | ||
89 | 89 | ||
90 | 90 | ||
91 | if (!ok) { |
91 | if (!ok) { |
92 | /*
|
92 | /*
|
93 | QString error_str;
|
93 | QString error_str;
|
94 | error_str = tr("íå óäàëîñü ïîëó÷èòü ñïèñîê îáúåêòîâ èç òàáëèöû ");
|
94 | error_str = tr("íå óäàëîñü ïîëó÷èòü ñïèñîê îáúåêòîâ èç òàáëèöû ");
|
95 | error_str.append(inctance);
|
95 | error_str.append(inctance);
|
96 | QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
|
96 | QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
|
97 | this, // Ðîäèòåëüñêèé âèäæåò.
|
97 | this, // Ðîäèòåëüñêèé âèäæåò.
|
98 | QObject::tr("Database Error"), // Çàãîëîâîê.
|
98 | QObject::tr("Database Error"), // Çàãîëîâîê.
|
99 | q.lastError().text()); // Òåêñò ñîîáùåíèÿ.
|
99 | q.lastError().text()); // Òåêñò ñîîáùåíèÿ.
|
100 | // tr("íå óäàëîñü ïîëó÷èòü ñïèñîê îáúåêòîâ èç òàáëèöû ")); // Òåêñò ñîîáùåíèÿ.
|
100 | // tr("íå óäàëîñü ïîëó÷èòü ñïèñîê îáúåêòîâ èç òàáëèöû ")); // Òåêñò ñîîáùåíèÿ.
|
101 | 101 | ||
102 | */
|
102 | */
|
103 | items.clear(); |
103 | items.clear(); |
104 | return; |
104 | return; |
105 | }
|
105 | }
|
106 | 106 | ||
107 | 107 | ||
108 | // field_inctance = q.record().indexOf(tr("TableWhithInstance"));
|
108 | // field_inctance = q.record().indexOf(tr("TableWhithInstance"));
|
109 | items.clear(); |
109 | items.clear(); |
110 | while(q.next()){ |
110 | while(q.next()){ |
111 | 111 | ||
112 | QString ID;
|
112 | QString ID;
|
113 | QString Name;
|
113 | QString Name;
|
114 | ID = q.value(0).toString(); // îïðåäåëÿåì ID |
114 | ID = q.value(0).toString(); // îïðåäåëÿåì ID |
115 | Name = q.value(1).toString(); // îïðåäåëÿåì Name |
115 | Name = q.value(1).toString(); // îïðåäåëÿåì Name |
116 | items.insert(ID, Name); |
116 | items.insert(ID, Name); |
117 | }
|
117 | }
|
118 | 118 | ||
119 | 119 | ||
120 | // return result_map;
|
120 | // return result_map;
|
121 | }
|
121 | }
|
122 | 122 | ||
123 | 123 | ||
124 | //! [1]
|
124 | //! [1]
|
125 | QWidget *SpinBoxDelegate::createEditor(QWidget *parent, |
125 | QWidget *SpinBoxDelegate::createEditor(QWidget *parent, |
126 | const QStyleOptionViewItem &/* option */, |
126 | const QStyleOptionViewItem &/* option */, |
127 | const QModelIndex &/* index */) const |
127 | const QModelIndex &/* index */) const |
128 | {
|
128 | {
|
129 | //QSpinBox *editor = new QSpinBox(parent);
|
129 | //QSpinBox *editor = new QSpinBox(parent);
|
130 | //editor->setMinimum(0);
|
130 | //editor->setMinimum(0);
|
131 | //editor->setMaximum(100);
|
131 | //editor->setMaximum(100);
|
132 | QStringList ID_list;
|
132 | QStringList ID_list;
|
133 | QStringList Name_list;
|
133 | QStringList Name_list;
|
134 | 134 | ||
135 | // getItems();
|
135 | // getItems();
|
136 | 136 | ||
137 | 137 | ||
138 | 138 | ||
139 | 139 | ||
140 | 140 | ||
141 | ID_list = items.keys(); |
141 | ID_list = items.keys(); |
142 | Name_list = items.values(); |
142 | Name_list = items.values(); |
143 | 143 | ||
144 | QComboBox *editor = new QComboBox(parent); |
144 | QComboBox *editor = new QComboBox(parent); |
145 | 145 | ||
146 | /*
|
146 | /*
|
147 | editor->addItem("0");
|
147 | editor->addItem("0");
|
148 | editor->addItem("1");
|
148 | editor->addItem("1");
|
149 | editor->addItem("2");
|
149 | editor->addItem("2");
|
150 | editor->addItem("3");
|
150 | editor->addItem("3");
|
151 | editor->addItem("4");
|
151 | editor->addItem("4");
|
152 | editor->addItem("5");
|
152 | editor->addItem("5");
|
153 | editor->addItem("6");
|
153 | editor->addItem("6");
|
154 | editor->addItem("7");
|
154 | editor->addItem("7");
|
155 | editor->addItem("8");
|
155 | editor->addItem("8");
|
156 | editor->addItem("9");
|
156 | editor->addItem("9");
|
157 | */
|
157 | */
|
158 | 158 | ||
159 | // editor->addItem("0");
|
159 | // editor->addItem("0");
|
160 | 160 | ||
161 | editor->addItems(Name_list); |
161 | editor->addItems(Name_list); |
- | 162 | // editor->setEditable(false);
|
|
162 | return editor; |
163 | return editor; |
163 | }
|
164 | }
|
164 | //! [1]
|
165 | //! [1]
|
165 | 166 | ||
166 | //! [2]
|
167 | //! [2]
|
167 | void SpinBoxDelegate::setEditorData(QWidget *editor, |
168 | void SpinBoxDelegate::setEditorData(QWidget *editor, |
168 | const QModelIndex &index) const |
169 | const QModelIndex &index) const |
169 | {
|
170 | {
|
170 | // int value = index.model()->data(index, Qt::EditRole).toInt();
|
171 | // int value = index.model()->data(index, Qt::EditRole).toInt();
|
171 | 172 | ||
172 | // QSpinBox *spinBox = static_cast<QSpinBox*>(editor);
|
173 | // QSpinBox *spinBox = static_cast<QSpinBox*>(editor);
|
173 | // spinBox->setValue(value);
|
174 | // spinBox->setValue(value);
|
174 | QString value = index.model()->data(index, Qt::EditRole).toString(); |
175 | QString value = index.model()->data(index, Qt::EditRole).toString(); |
175 | 176 | ||
176 | QComboBox *comboBox = static_cast<QComboBox*>(editor); |
177 | QComboBox *comboBox = static_cast<QComboBox*>(editor); |
177 | 178 | ||
178 | QStringList ID_list;
|
179 | QStringList ID_list;
|
179 | QStringList Name_list;
|
180 | QStringList Name_list;
|
180 | int curr_index; |
181 | int curr_index; |
181 | 182 | ||
182 | ID_list = items.keys(); |
183 | ID_list = items.keys(); |
183 | Name_list = items.values(); |
184 | Name_list = items.values(); |
184 | 185 | ||
185 | curr_index = ID_list.indexOf(value); |
186 | curr_index = ID_list.indexOf(value); |
186 | if (curr_index==-1) return; |
187 | if (curr_index==-1) return; |
187 | comboBox->setCurrentIndex(curr_index); |
188 | comboBox->setCurrentIndex(curr_index); |
188 | /****************************************************
|
189 | /****************************************************
|
189 | if (value == "0") comboBox->setCurrentIndex(0);
|
190 | if (value == "0") comboBox->setCurrentIndex(0);
|
190 | if (value == "1") comboBox->setCurrentIndex(1);
|
191 | if (value == "1") comboBox->setCurrentIndex(1);
|
191 | if (value == "2") comboBox->setCurrentIndex(2);
|
192 | if (value == "2") comboBox->setCurrentIndex(2);
|
192 | if (value == "3") comboBox->setCurrentIndex(3);
|
193 | if (value == "3") comboBox->setCurrentIndex(3);
|
193 | if (value == "4") comboBox->setCurrentIndex(4);
|
194 | if (value == "4") comboBox->setCurrentIndex(4);
|
194 | if (value == "5") comboBox->setCurrentIndex(5);
|
195 | if (value == "5") comboBox->setCurrentIndex(5);
|
195 | if (value == "6") comboBox->setCurrentIndex(6);
|
196 | if (value == "6") comboBox->setCurrentIndex(6);
|
196 | if (value == "7") comboBox->setCurrentIndex(7);
|
197 | if (value == "7") comboBox->setCurrentIndex(7);
|
197 | if (value == "8") comboBox->setCurrentIndex(8);
|
198 | if (value == "8") comboBox->setCurrentIndex(8);
|
198 | if (value == "9") comboBox->setCurrentIndex(9);
|
199 | if (value == "9") comboBox->setCurrentIndex(9);
|
199 | ******************************************************/
|
200 | ******************************************************/
|
200 | comboBox->setEditable(true); |
201 | comboBox->setEditable(false); |
201 | 202 | ||
202 | 203 | ||
203 | //comboBox->setItemText(0, value);
|
204 | //comboBox->setItemText(0, value);
|
204 | 205 | ||
205 | }
|
206 | }
|
206 | //! [2]
|
207 | //! [2]
|
207 | 208 | ||
208 | //! [3]
|
209 | //! [3]
|
209 | void SpinBoxDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, |
210 | void SpinBoxDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, |
210 | const QModelIndex &index) const |
211 | const QModelIndex &index) const |
211 | {
|
212 | {
|
212 | // QSpinBox *spinBox = static_cast<QSpinBox*>(editor);
|
213 | // QSpinBox *spinBox = static_cast<QSpinBox*>(editor);
|
213 | // spinBox->interpretText();
|
214 | // spinBox->interpretText();
|
214 | // int value = spinBox->value();
|
215 | // int value = spinBox->value();
|
215 | 216 | ||
216 | // model->setData(index, value, Qt::EditRole);
|
217 | // model->setData(index, value, Qt::EditRole);
|
217 | QStringList ID_list;
|
218 | QStringList ID_list;
|
218 | QStringList Name_list;
|
219 | QStringList Name_list;
|
219 | 220 | ||
220 | QComboBox *comboBox = static_cast<QComboBox*>(editor); |
221 | QComboBox *comboBox = static_cast<QComboBox*>(editor); |
221 | int currIndex; |
222 | int currIndex; |
222 | currIndex = comboBox->currentIndex(); |
223 | currIndex = comboBox->currentIndex(); |
223 | if (currIndex==-1) return; |
224 | if (currIndex==-1) return; |
224 | // QString value = comboBox->itemText(currIndex);
|
225 | // QString value = comboBox->itemText(currIndex);
|
225 | 226 | ||
226 | ID_list = items.keys(); |
227 | ID_list = items.keys(); |
227 | Name_list = items.values(); |
228 | Name_list = items.values(); |
228 | 229 | ||
229 | QString value = ID_list.at(currIndex); |
230 | QString value = ID_list.at(currIndex); |
230 | model->setData(index, value, Qt::EditRole); |
231 | model->setData(index, value, Qt::EditRole); |
231 | }
|
232 | }
|
232 | //! [3]
|
233 | //! [3]
|
233 | 234 | ||
234 | //! [4]
|
235 | //! [4]
|
235 | void SpinBoxDelegate::updateEditorGeometry(QWidget *editor, |
236 | void SpinBoxDelegate::updateEditorGeometry(QWidget *editor, |
236 | const QStyleOptionViewItem &option, const QModelIndex &/* index */) const |
237 | const QStyleOptionViewItem &option, const QModelIndex &/* index */) const |
237 | {
|
238 | {
|
238 | editor->setGeometry(option.rect); |
239 | editor->setGeometry(option.rect); |
239 | }
|
240 | }
|
240 | //! [4]
|
241 | //! [4]
|
241 | MyDEDelegate::MyDEDelegate( |
242 | MyDEDelegate::MyDEDelegate( |
242 | bool calpopup,
|
243 | bool calpopup,
|
243 | QObject *parent) |
244 | QObject *parent) |
244 | : QItemDelegate(parent), |
245 | : QItemDelegate(parent), |
245 | m_calpopup(calpopup) { |
246 | m_calpopup(calpopup) { |
246 | }
|
247 | }
|
247 | 248 | ||
248 | QWidget *MyDEDelegate::createEditor( |
249 | QWidget *MyDEDelegate::createEditor( |
249 | QWidget *parent,
|
250 | QWidget *parent,
|
250 | const QStyleOptionViewItem& /* option */, |
251 | const QStyleOptionViewItem& /* option */, |
251 | const QModelIndex& /* index */) const { |
252 | const QModelIndex& /* index */) const { |
252 | QDateEdit *editor = new QDateEdit(parent); |
253 | QDateEdit *editor = new QDateEdit(parent); |
253 | editor->setCalendarPopup(m_calpopup); |
254 | editor->setCalendarPopup(m_calpopup); |
254 | editor->installEventFilter(const_cast<MyDEDelegate*>(this)); |
255 | editor->installEventFilter(const_cast<MyDEDelegate*>(this)); |
255 | return editor; |
256 | return editor; |
256 | }
|
257 | }
|
257 | 258 | ||
258 | void MyDEDelegate::setEditorData( |
259 | void MyDEDelegate::setEditorData( |
259 | QWidget *editor,
|
260 | QWidget *editor,
|
260 | const QModelIndex &index) const { |
261 | const QModelIndex &index) const { |
261 | QDate value = index.model()->data( |
262 | QDate value = index.model()->data( |
262 | index, Qt::EditRole).toDate(); |
263 | index, Qt::EditRole).toDate(); |
263 | QDateEdit *de = static_cast<QDateEdit*>(editor); |
264 | QDateEdit *de = static_cast<QDateEdit*>(editor); |
264 | de->setDate(value); |
265 | de->setDate(value); |
265 | }
|
266 | }
|
266 | 267 | ||
267 | void MyDEDelegate::setModelData( |
268 | void MyDEDelegate::setModelData( |
268 | QWidget *editor,
|
269 | QWidget *editor,
|
269 | QAbstractItemModel *model,
|
270 | QAbstractItemModel *model,
|
270 | const QModelIndex& index) const { |
271 | const QModelIndex& index) const { |
271 | QDateEdit *de = static_cast<QDateEdit*>(editor); |
272 | QDateEdit *de = static_cast<QDateEdit*>(editor); |
272 | de->interpretText(); |
273 | de->interpretText(); |
273 | QDate value = de->date(); |
274 | QDate value = de->date(); |
274 | model->setData(index, value); |
275 | model->setData(index, value); |
275 | }
|
276 | }
|
276 | 277 | ||
277 | void MyDEDelegate::updateEditorGeometry( |
278 | void MyDEDelegate::updateEditorGeometry( |
278 | QWidget *editor,
|
279 | QWidget *editor,
|
279 | const QStyleOptionViewItem &option, |
280 | const QStyleOptionViewItem &option, |
280 | const QModelIndex& /* index */) const { |
281 | const QModelIndex& /* index */) const { |
281 | 282 | ||
282 | 283 | ||
283 | 284 | ||
284 | editor->setGeometry(option.rect); |
285 | editor->setGeometry(option.rect); |
285 | }
|
286 | }
|
286 | 287 | ||
287 | 288 | ||
288 | 289 | ||
289 | 290 | ||
290 | 291 | ||
291 | CPictureDelegate::CPictureDelegate( QObject * parent ) : QItemDelegate(parent) |
292 | CPictureDelegate::CPictureDelegate( QObject * parent ) : QItemDelegate(parent) |
292 | {
|
293 | {
|
293 | }
|
294 | }
|
294 | 295 | ||
295 | void CPictureDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const |
296 | void CPictureDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const |
296 | {
|
297 | {
|
297 | m_pxPicture.fill( QColor(Qt::white) ); |
298 | m_pxPicture.fill( QColor(Qt::white) ); |
298 | 299 | ||
299 | const QAbstractItemModel * model = index.model(); |
300 | const QAbstractItemModel * model = index.model(); |
300 | QString sFileName = model->data( index, Qt::DisplayRole ).toString(); |
301 | QString sFileName = model->data( index, Qt::DisplayRole ).toString(); |
301 | 302 | ||
302 | if ( !sFileName.isEmpty() ) |
303 | if ( !sFileName.isEmpty() ) |
303 | m_pxPicture.load( sFileName ); |
304 | m_pxPicture.load( sFileName ); |
304 | else { |
305 | else { |
305 | //QItemDelegate::paint(painter, option, index);
|
306 | //QItemDelegate::paint(painter, option, index);
|
306 | return; |
307 | return; |
307 | }
|
308 | }
|
308 | 309 | ||
309 | QPalette::ColorGroup cg = (option.state & QStyle::State_Enabled) ? |
310 | QPalette::ColorGroup cg = (option.state & QStyle::State_Enabled) ? |
310 | ((option.state & QStyle::State_Active) ? QPalette::Normal : QPalette::Inactive ) : |
311 | ((option.state & QStyle::State_Active) ? QPalette::Normal : QPalette::Inactive ) : |
311 | QPalette::Disabled; |
312 | QPalette::Disabled; |
312 | 313 | ||
313 | if (option.state & QStyle::State_Selected) |
314 | if (option.state & QStyle::State_Selected) |
314 | painter->fillRect(option.rect, option.palette.color(cg, QPalette::Highlight)); |
315 | painter->fillRect(option.rect, option.palette.color(cg, QPalette::Highlight)); |
315 | 316 | ||
316 | int nX = option.rect.x() + ( ( option.rect.width() - m_pxPicture.rect().width() ) / 2 ); |
317 | int nX = option.rect.x() + ( ( option.rect.width() - m_pxPicture.rect().width() ) / 2 ); |
317 | int nY = option.rect.y() + ( ( option.rect.height() - m_pxPicture.rect().height() ) / 2 ); |
318 | int nY = option.rect.y() + ( ( option.rect.height() - m_pxPicture.rect().height() ) / 2 ); |
318 | painter->drawPixmap( nX, nY, m_pxPicture ); |
319 | painter->drawPixmap( nX, nY, m_pxPicture ); |
319 | 320 | ||
320 | 321 | ||
321 | //// drawFocus(painter, option, option.rect.adjusted(0, 0, -1, -1)); // since we draw the grid ourselves
|
322 | //// drawFocus(painter, option, option.rect.adjusted(0, 0, -1, -1)); // since we draw the grid ourselves
|
322 | 323 | ||
323 | /*
|
324 | /*
|
324 | QPen pen = painter->pen();
|
325 | QPen pen = painter->pen();
|
325 | painter->setPen(option.palette.color(QPalette::Mid));
|
326 | painter->setPen(option.palette.color(QPalette::Mid));
|
326 | painter->drawLine(option.rect.bottomLeft(), option.rect.bottomRight());
|
327 | painter->drawLine(option.rect.bottomLeft(), option.rect.bottomRight());
|
327 | painter->drawLine(option.rect.topRight(), option.rect.bottomRight());
|
328 | painter->drawLine(option.rect.topRight(), option.rect.bottomRight());
|
328 | painter->setPen(pen);
|
329 | painter->setPen(pen);
|
329 | */
|
330 | */
|
330 | }
|
331 | }
|
331 | 332 | ||
332 | 333 | ||
333 | 334 | ||
334 | 335 | ||
335 | void TimeEditDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, |
336 | void TimeEditDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, |
336 | const QModelIndex &index) const |
337 | const QModelIndex &index) const |
337 | {
|
338 | {
|
338 | int datetime = index.model()->data(index, Qt::DisplayRole).toInt(); |
339 | int datetime = index.model()->data(index, Qt::DisplayRole).toInt(); |
339 | 340 | ||
340 | QString indexvalue = ""; |
341 | QString indexvalue = ""; |
341 | 342 | ||
342 | if (datetime > 0) |
343 | if (datetime > 0) |
343 | {
|
344 | {
|
344 | QDateTime dateTime2 = QDateTime(); |
345 | QDateTime dateTime2 = QDateTime(); |
345 | dateTime2.setTime_t(datetime); |
346 | dateTime2.setTime_t(datetime); |
346 | indexvalue = dateTime2.toString(this->timeformat); |
347 | indexvalue = dateTime2.toString(this->timeformat); |
347 | }
|
348 | }
|
348 | else
|
349 | else
|
349 | {
|
350 | {
|
350 | indexvalue = tr("Date not set"); |
351 | indexvalue = tr("Date not set"); |
351 | }
|
352 | }
|
352 | 353 | ||
353 | Q_ASSERT(index.isValid()); |
354 | Q_ASSERT(index.isValid()); |
354 | 355 | ||
355 | QStyleOptionViewItemV3 opt = setOptions(index, option); |
356 | QStyleOptionViewItemV3 opt = setOptions(index, option); |
356 | 357 | ||
357 | const QStyleOptionViewItemV2 *v2 = qstyleoption_cast<const QStyleOptionViewItemV2 *>(&option); |
358 | const QStyleOptionViewItemV2 *v2 = qstyleoption_cast<const QStyleOptionViewItemV2 *>(&option); |
358 | opt.features = v2 ? v2->features |
359 | opt.features = v2 ? v2->features |
359 | : QStyleOptionViewItemV2::ViewItemFeatures(QStyleOptionViewItemV2::None); |
360 | : QStyleOptionViewItemV2::ViewItemFeatures(QStyleOptionViewItemV2::None); |
360 | const QStyleOptionViewItemV3 *v3 = qstyleoption_cast<const QStyleOptionViewItemV3 *>(&option); |
361 | const QStyleOptionViewItemV3 *v3 = qstyleoption_cast<const QStyleOptionViewItemV3 *>(&option); |
361 | opt.locale = v3 ? v3->locale : QLocale(); |
362 | opt.locale = v3 ? v3->locale : QLocale(); |
362 | opt.widget = v3 ? v3->widget : 0; |
363 | opt.widget = v3 ? v3->widget : 0; |
363 | 364 | ||
364 | // prepare
|
365 | // prepare
|
365 | painter->save(); |
366 | painter->save(); |
366 | 367 | ||
367 | painter->setClipRect(opt.rect); |
368 | painter->setClipRect(opt.rect); |
368 | 369 | ||
369 | // get the data and the rectangles
|
370 | // get the data and the rectangles
|
370 | QVariant value;
|
371 | QVariant value;
|
371 | 372 | ||
372 | QPixmap pixmap;
|
373 | QPixmap pixmap;
|
373 | QRect decorationRect;
|
374 | QRect decorationRect;
|
374 | value = index.data(Qt::DecorationRole); |
375 | value = index.data(Qt::DecorationRole); |
375 | 376 | ||
376 | QString text;
|
377 | QString text;
|
377 | QRect displayRect;
|
378 | QRect displayRect;
|
378 | value = index.data(Qt::DisplayRole); |
379 | value = index.data(Qt::DisplayRole); |
379 | if (value.isValid()) { |
380 | if (value.isValid()) { |
380 | text = indexvalue; |
381 | text = indexvalue; |
381 | displayRect = textRectangle(painter, option.rect, opt.font, text); |
382 | displayRect = textRectangle(painter, option.rect, opt.font, text); |
382 | }
|
383 | }
|
383 | 384 | ||
384 | QRect checkRect;
|
385 | QRect checkRect;
|
385 | Qt::CheckState checkState = Qt::Unchecked; |
386 | Qt::CheckState checkState = Qt::Unchecked; |
386 | value = index.data(Qt::CheckStateRole); |
387 | value = index.data(Qt::CheckStateRole); |
387 | if (value.isValid()) { |
388 | if (value.isValid()) { |
388 | checkState = static_cast<Qt::CheckState>(value.toInt()); |
389 | checkState = static_cast<Qt::CheckState>(value.toInt()); |
389 | checkRect = check(opt, opt.rect, value); |
390 | checkRect = check(opt, opt.rect, value); |
390 | }
|
391 | }
|
391 | 392 | ||
392 | // do the layout
|
393 | // do the layout
|
393 | doLayout(opt, &checkRect, &decorationRect, &displayRect, false); |
394 | doLayout(opt, &checkRect, &decorationRect, &displayRect, false); |
394 | // draw the item
|
395 | // draw the item
|
395 | 396 | ||
396 | drawBackground(painter, opt, index); |
397 | drawBackground(painter, opt, index); |
397 | drawCheck(painter, opt, checkRect, checkState); |
398 | drawCheck(painter, opt, checkRect, checkState); |
398 | drawDecoration(painter, opt, decorationRect, pixmap); |
399 | drawDecoration(painter, opt, decorationRect, pixmap); |
399 | drawDisplay(painter, opt, displayRect, text); |
400 | drawDisplay(painter, opt, displayRect, text); |
400 | drawFocus(painter, opt, displayRect); |
401 | drawFocus(painter, opt, displayRect); |
401 | 402 | ||
402 | // done
|
403 | // done
|
403 | painter->restore(); |
404 | painter->restore(); |
404 | }
|
405 | }
|
405 | 406 |