Хранилища Subversion OpenInventory

Редакция

Редакция 165 | К новейшей редакции | Только различия | Не учитывать пробелы | Содержимое файла | Авторство | Последнее изменение | Открыть журнал | RSS

Редакция 165 Редакция 167
1
1
2
2
/****************************************************************************
3
3
**
4
4
** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
5
5
** All rights reserved.
6
6
** Contact: Nokia Corporation (qt-info@nokia.com)
7
7
**
8
8
** This file is part of the examples of the Qt Toolkit.
9
9
**
10
10
** $QT_BEGIN_LICENSE:LGPL$
11
11
** Commercial Usage
12
12
** Licensees holding valid Qt Commercial licenses may use this file in
13
13
** accordance with the Qt Commercial License Agreement provided with the
14
14
** Software or, alternatively, in accordance with the terms contained in
15
15
** a written agreement between you and Nokia.
16
16
**
17
17
** GNU Lesser General Public License Usage
18
18
** Alternatively, this file may be used under the terms of the GNU Lesser
19
19
** General Public License version 2.1 as published by the Free Software
20
20
** Foundation and appearing in the file LICENSE.LGPL included in the
21
21
** packaging of this file.  Please review the following information to
22
22
** ensure the GNU Lesser General Public License version 2.1 requirements
23
23
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
24
24
**
25
25
** In addition, as a special exception, Nokia gives you certain additional
26
26
** rights.  These rights are described in the Nokia Qt LGPL Exception
27
27
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
28
28
**
29
29
** GNU General Public License Usage
30
30
** Alternatively, this file may be used under the terms of the GNU
31
31
** General Public License version 3.0 as published by the Free Software
32
32
** Foundation and appearing in the file LICENSE.GPL included in the
33
33
** packaging of this file.  Please review the following information to
34
34
** ensure the GNU General Public License version 3.0 requirements will be
35
35
** met: http://www.gnu.org/copyleft/gpl.html.
36
36
**
37
37
** If you have questions regarding the use of this file, please contact
38
38
** Nokia at qt-info@nokia.com.
39
39
** $QT_END_LICENSE$
40
40
**
41
41
****************************************************************************/
42
42
43
43
/*
44
44
    delegate.cpp
45
45

46
46
    A delegate that allows the user to change integer values from the model
47
47
    using a spin box widget.
48
48
*/
49
49
50
50
#include <QtGui>
51
51
52
52
#include "delegate.h"
53
53
54
54
55
55
//! [0]
56
56
SpinBoxDelegate::SpinBoxDelegate(QObject *parent)
57
57
    : QItemDelegate(parent)
58
58
{
59
59
  //  SpinBoxDelegate::getItems();
60
60
}
61
61
//! [0]
62
62
63
63
//! [1]
64
64
QWidget *SpinBoxDelegate::createEditor(QWidget *parent,
65
65
    const QStyleOptionViewItem &/* option */,
66
66
    const QModelIndex &/* index */) const
67
67
{
68
68
    QStringList ID_list;
69
69
    QStringList Name_list;
70
70
71
71
  // getItems();
72
72
73
73
74
74
75
75
76
76
77
77
    ID_list = items.keys();
78
78
    Name_list = items.values();
79
79
80
80
    QComboBox *editor = new QComboBox(parent);
81
81
82
82
/*
83
83
    editor->addItem("0");
84
84
    editor->addItem("1");
85
85
    editor->addItem("2");
86
86
    editor->addItem("3");
87
87
    editor->addItem("4");
88
88
    editor->addItem("5");
89
89
    editor->addItem("6");
90
90
    editor->addItem("7");
91
91
    editor->addItem("8");
92
92
    editor->addItem("9");
93
93
*/
94
94
95
95
//  editor->addItem("0");
96
96
97
97
    editor->addItems(Name_list);
98
98
    return editor;
99
99
}
100
100
//! [1]
101
101
102
102
//! [2]
103
103
void SpinBoxDelegate::setEditorData(QWidget *editor,
104
104
                                    const QModelIndex &index) const
105
105
{
106
106
    QString value = index.model()->data(index, Qt::EditRole).toString();
107
107
    QComboBox *comboBox = static_cast<QComboBox*>(editor);
108
108
109
109
    QStringList ID_list;
110
110
    QStringList Name_list;
111
111
    int curr_index;
112
112
113
113
    ID_list = items.keys();
114
114
    Name_list = items.values();
115
115
116
116
    curr_index = ID_list.indexOf(value);
117
117
    comboBox->setCurrentIndex(curr_index);
118
118
    /****************************************************
119
119
    if (value == "0") comboBox->setCurrentIndex(0);
120
120
    if (value == "1") comboBox->setCurrentIndex(1);
121
121
    if (value == "2") comboBox->setCurrentIndex(2);
122
122
    if (value == "3") comboBox->setCurrentIndex(3);
123
123
    if (value == "4") comboBox->setCurrentIndex(4);
124
124
    if (value == "5") comboBox->setCurrentIndex(5);
125
125
    if (value == "6") comboBox->setCurrentIndex(6);
126
126
    if (value == "7") comboBox->setCurrentIndex(7);
127
127
    if (value == "8") comboBox->setCurrentIndex(8);
128
128
    if (value == "9") comboBox->setCurrentIndex(9);
129
129
    ******************************************************/
130
130
    comboBox->setEditable(true);
131
131
132
132
133
133
//comboBox->setItemText(0, value);
134
134
135
135
}
136
136
//! [2]
137
137
138
138
//! [3]
139
139
void SpinBoxDelegate::setModelData(QWidget *editor, QAbstractItemModel *model,
140
140
                                   const QModelIndex &index) const
141
141
{
142
142
    QStringList ID_list;
143
143
    QStringList Name_list;
144
144
145
145
    QComboBox *comboBox = static_cast<QComboBox*>(editor);
146
146
    int currIndex;
147
147
    currIndex = comboBox->currentIndex();
148
148
  //  QString value = comboBox->itemText(currIndex);
149
149
150
150
    ID_list = items.keys();
151
151
    Name_list = items.values();
152
152
153
153
    QString value = ID_list.at(currIndex);
154
154
    model->setData(index, value, Qt::EditRole);
155
155
156
156
157
157
}
158
158
//! [3]
159
159
160
160
//! [4]
161
161
void SpinBoxDelegate::updateEditorGeometry(QWidget *editor,
162
162
    const QStyleOptionViewItem &option, const QModelIndex &/* index */) const
163
163
{
164
164
    editor->setGeometry(option.rect);
165
165
}
166
166
//! [4]
167
167
168
168
void SpinBoxDelegate::getItems(){
169
169
    QMap <QString, QString> result_map;
170
170
    QSqlQuery q;
171
171
    QString query_str;
172
172
    bool ok;
173
173
174
174
    query_str = tr("select * from `ListOfClasses`");
175
175
    q.prepare(query_str);
176
176
177
177
178
178
    ok = q.exec();
179
179
180
180
181
181
182
182
183
183
    if (!ok) {
184
184
                            /*
185
185
                            QString error_str;
186
186
                            error_str =  tr("íå óäàëîñü ïîëó÷èòü ñïèñîê îáúåêòîâ èç òàáëèöû ");
187
187
                            error_str.append(inctance);
188
188
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
189
189
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
190
190
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
191
191
                                                                            q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
192
192
                                                                        //    tr("íå óäàëîñü ïîëó÷èòü ñïèñîê îáúåêòîâ èç òàáëèöû "));    // Òåêñò ñîîáùåíèÿ.
193
193

194
194
                            */
195
195
                            items.clear();
196
196
                            return;
197
197
                        }
198
198
199
199
200
200
 //   field_inctance = q.record().indexOf(tr("TableWhithInstance"));
201
201
    items.clear();
202
202
    while(q.next()){
203
203
204
204
                  QString ID;
205
205
                  QString ClassName;
206
206
                  ID = q.value(0).toString(); // îïðåäåëÿåì ID
207
207
                  ClassName = q.value(1).toString(); // îïðåäåëÿåì Name
208
208
                  items.insert(ID, ClassName);
209
209
                }
210
210
211
211
212
212
 //   return result_map;
213
213
}
214
214
215
215
216
216
217
217
218
218
219
219
220
220
221
221
222
222
223
223
224
224
225
225
226
226
227
227
228
228
229
229
230
230
231
231
MyDEDelegate::MyDEDelegate(
232
232
                       bool calpopup,
233
233
                       QObject *parent)
234
234
               : QItemDelegate(parent),
235
235
                 m_calpopup(calpopup) {
236
236
   }
237
237
238
238
   QWidget *MyDEDelegate::createEditor(
239
239
               QWidget *parent,
240
240
               const QStyleOptionViewItem& /* option */,
241
241
               const QModelIndex& /* index */) const {
242
242
       QDateEdit *editor = new QDateEdit(parent);
243
243
       editor->setCalendarPopup(m_calpopup);
244
244
       editor->installEventFilter(const_cast<MyDEDelegate*>(this));
245
245
       return editor;
246
246
   }
247
247
248
248
   void MyDEDelegate::setEditorData(
249
249
                   QWidget *editor,
250
250
                   const QModelIndex &index) const {
251
251
       QDate value = index.model()->data(
252
252
               index, Qt::EditRole).toDate();
253
253
       QDateEdit *de = static_cast<QDateEdit*>(editor);
254
254
       de->setDate(value);
255
255
   }
256
256
257
257
   void MyDEDelegate::setModelData(
258
258
               QWidget *editor,
259
259
               QAbstractItemModel *model,
260
260
               const QModelIndex& index) const {
261
261
       QDateEdit *de = static_cast<QDateEdit*>(editor);
262
262
       de->interpretText();
263
263
       QDate value = de->date();
264
264
       model->setData(index, value);
265
265
   }
266
266
267
267
   void MyDEDelegate::updateEditorGeometry(
268
268
               QWidget *editor,
269
269
               const QStyleOptionViewItem &option,
270
270
               const QModelIndex& /* index */) const {
271
271
       editor->setGeometry(option.rect);
272
272
   }
273
273
274
274
275
275
276
276
   CPictureDelegate::CPictureDelegate( QObject * parent ) : QItemDelegate(parent)
277
277
   {
278
278
   }
279
279
280
280
281
281
282
282
283
283
284
284
   QWidget *CPictureDelegate::createEditor(QWidget *parent,
285
285
       const QStyleOptionViewItem &/* option */,
286
286
       const QModelIndex &/* index */) const
287
287
   {
288
288
289
289
       IconForm *editor = new IconForm(parent);
290
290
       return editor;
291
291
292
292
   }
293
293
294
294
295
295
296
296
297
297
   void CPictureDelegate::setEditorData(QWidget *editor,
298
298
                                       const QModelIndex &index) const
299
299
   {
300
300
301
301
302
302
       const QAbstractItemModel * model = index.model();
303
303
       IconForm *icnFrm = static_cast<IconForm*>(editor);
304
304
       QVariant currentImage = model->data(index,0);
305
305
       QByteArray bytes = currentImage.toByteArray();
306
306
       if (currentImage.isValid()) {
307
307
            m_pxPicture.loadFromData(bytes);
308
308
       }
309
309
       else {
310
310
           //QItemDelegate::paint(painter, option, index);
-
 
311
-
 
312
311
313
           return;
312
314
       }
313
315
       icnFrm->setPixmap(m_pxPicture);
314
316
   }
315
317
316
318
317
319
318
320
319
321
   void CPictureDelegate::setModelData(
320
322
               QWidget *editor,
321
323
               QAbstractItemModel *model,
322
324
               const QModelIndex& index) const {
323
325
       IconForm *icnFrm = static_cast<IconForm*>(editor);
-
 
326
       if (!(icnFrm->dataIsChanged())) return;
-
 
327
324
328
       m_pxPicture = icnFrm->pixmap();
-
 
329
       QImage currentImage = m_pxPicture.toImage();
-
 
330
          QByteArray bytes;
-
 
331
          QBuffer buffer(&bytes);
-
 
332
          buffer.open(QIODevice::WriteOnly);
-
 
333
          currentImage.save(&buffer, "PNG");
-
 
334
-
 
335
-
 
336
-
 
337
-
 
338
         model->setData(index, QVariant (bytes), Qt::EditRole);
-
 
339
-
 
340
     //    int widht = m_pxPicture.width();
-
 
341
     //    int heigh =  m_pxPicture.height();
-
 
342
     //    tblView->setRowHeight(index.row(), heigh + 10);
-
 
343
         // model->submitAll();
-
 
344
-
 
345
-
 
346
-
 
347
-
 
348
      // model->setData(index, value);
-
 
349
   }
-
 
350
-
 
351
-
 
352
-
 
353
   void CPictureDelegate::updateEditorGeometry(
-
 
354
               QWidget *editor,
-
 
355
               const QStyleOptionViewItem &option,
-
 
356
               const QModelIndex& /* index */) const {
-
 
357
-
 
358
-
 
359
   //    QRect r(option.rect.x() + option.rect.width()/2 - 7, option.rect.y() + option.rect.height()/2 - 7, 150, 100);
-
 
360
     //      editor->setGeometry(r);
-
 
361
-
 
362
        editor->setGeometry(option.rect);
-
 
363
   }
-
 
364
-
 
365
-
 
366
-
 
367
-
 
368
   void CPictureDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
-
 
369
   {
-
 
370
-
 
371
-
 
372
          m_pxPicture.fill( QColor(Qt::white) );
-
 
373
-
 
374
          const QAbstractItemModel * model = index.model();
-
 
375
          QString sFileName = model->data( index, Qt::DisplayRole ).toString();
-
 
376
-
 
377
          QVariant currentImage = model->data(index,0);
-
 
378
-
 
379
-
 
380
           QByteArray bytes = currentImage.toByteArray();
-
 
381
     //       QImage image;
-
 
382
     //       image.loadFromData(bytes);
-
 
383
-
 
384
-
 
385
           if (currentImage.isValid()) {
-
 
386
                m_pxPicture.loadFromData(bytes);
-
 
387
-
 
388
           }
-
 
389
           else {
-
 
390
               //QItemDelegate::paint(painter, option, index);
-
 
391
           return;
-
 
392
           }
-
 
393
-
 
394
-
 
395
-
 
396
-
 
397
-
 
398
           /*
-
 
399

-
 
400
           if ( !sFileName.isEmpty() )
-
 
401
                   m_pxPicture.load( sFileName );
-
 
402
           else {
-
 
403
               //QItemDelegate::paint(painter, option, index);
-
 
404
           return;
-
 
405
           }
-
 
406
*/
-
 
407
-
 
408
-
 
409
           QPalette::ColorGroup cg = (option.state & QStyle::State_Enabled) ?
-
 
410
                                                             ((option.state & QStyle::State_Active) ? QPalette::Normal : QPalette::Inactive ) :
-
 
411
                                                             QPalette::Disabled;
-
 
412
-
 
413
            if (option.state & QStyle::State_Selected)
-
 
414
-
 
415
-
 
416
                painter->fillRect(option.rect, option.palette.color(cg, QPalette::Highlight));
-
 
417
-
 
418
           int nX = option.rect.x() + ( ( option.rect.width() - m_pxPicture.rect().width() ) / 2 );
-
 
419
           int nY = option.rect.y() + ( ( option.rect.height() - m_pxPicture.rect().height() ) / 2 );
-
 
420
           painter->drawPixmap( nX, nY, m_pxPicture );
-
 
421
-
 
422
-
 
423
       //    drawFocus(painter, option, option.rect.adjusted(0, 0, -1, -1)); // since we draw the grid ourselves
-
 
424
-
 
425
           /*
-
 
426
           QPen pen = painter->pen();
-
 
427
           painter->setPen(option.palette.color(QPalette::Mid));
-
 
428
           painter->drawLine(option.rect.bottomLeft(), option.rect.bottomRight());
-
 
429
           painter->drawLine(option.rect.topRight(), option.rect.bottomRight());
-
 
430
           painter->setPen(pen);
-
 
431
   */
-
 
432
}
-
 
433
-
 
434
-
 
435
   void CPictureDelegate::setTableView(QTableView* table){
-
 
436
       tblView = table;
-
 
437
   }
-
 
438