Хранилища Subversion OpenInventory

Редакция

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

Редакция 224 Редакция 225
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
//    editor->setEditable(false);
163
    return editor;
163
    return editor;
164
}
164
}
165
//! [1]
165
//! [1]
166
166
167
//! [2]
167
//! [2]
168
void SpinBoxDelegate::setEditorData(QWidget *editor,
168
void SpinBoxDelegate::setEditorData(QWidget *editor,
169
                                    const QModelIndex &index) const
169
                                    const QModelIndex &index) const
170
{
170
{
171
   // int value = index.model()->data(index, Qt::EditRole).toInt();
171
   // int value = index.model()->data(index, Qt::EditRole).toInt();
172
172
173
 //   QSpinBox *spinBox = static_cast<QSpinBox*>(editor);
173
 //   QSpinBox *spinBox = static_cast<QSpinBox*>(editor);
174
 //   spinBox->setValue(value);
174
 //   spinBox->setValue(value);
175
QString value = index.model()->data(index, Qt::EditRole).toString();
175
QString value = index.model()->data(index, Qt::EditRole).toString();
176
176
177
QComboBox *comboBox = static_cast<QComboBox*>(editor);
177
QComboBox *comboBox = static_cast<QComboBox*>(editor);
178
178
179
QStringList ID_list;
179
QStringList ID_list;
180
QStringList Name_list;
180
QStringList Name_list;
181
int curr_index;
181
int curr_index;
182
182
183
ID_list = items.keys();
183
ID_list = items.keys();
184
Name_list = items.values();
184
Name_list = items.values();
185
185
186
curr_index = ID_list.indexOf(value);
186
curr_index = ID_list.indexOf(value);
187
if (curr_index==-1) return;
187
if (curr_index==-1) return;
188
comboBox->setCurrentIndex(curr_index);
188
comboBox->setCurrentIndex(curr_index);
189
/****************************************************
189
/****************************************************
190
if (value == "0") comboBox->setCurrentIndex(0);
190
if (value == "0") comboBox->setCurrentIndex(0);
191
if (value == "1") comboBox->setCurrentIndex(1);
191
if (value == "1") comboBox->setCurrentIndex(1);
192
if (value == "2") comboBox->setCurrentIndex(2);
192
if (value == "2") comboBox->setCurrentIndex(2);
193
if (value == "3") comboBox->setCurrentIndex(3);
193
if (value == "3") comboBox->setCurrentIndex(3);
194
if (value == "4") comboBox->setCurrentIndex(4);
194
if (value == "4") comboBox->setCurrentIndex(4);
195
if (value == "5") comboBox->setCurrentIndex(5);
195
if (value == "5") comboBox->setCurrentIndex(5);
196
if (value == "6") comboBox->setCurrentIndex(6);
196
if (value == "6") comboBox->setCurrentIndex(6);
197
if (value == "7") comboBox->setCurrentIndex(7);
197
if (value == "7") comboBox->setCurrentIndex(7);
198
if (value == "8") comboBox->setCurrentIndex(8);
198
if (value == "8") comboBox->setCurrentIndex(8);
199
if (value == "9") comboBox->setCurrentIndex(9);
199
if (value == "9") comboBox->setCurrentIndex(9);
200
******************************************************/
200
******************************************************/
201
comboBox->setEditable(false);
201
comboBox->setEditable(false);
202
202
203
203
204
//comboBox->setItemText(0, value);
204
//comboBox->setItemText(0, value);
205
205
206
}
206
}
207
//! [2]
207
//! [2]
208
208
209
//! [3]
209
//! [3]
210
void SpinBoxDelegate::setModelData(QWidget *editor, QAbstractItemModel *model,
210
void SpinBoxDelegate::setModelData(QWidget *editor, QAbstractItemModel *model,
211
                                   const QModelIndex &index) const
211
                                   const QModelIndex &index) const
212
{
212
{
213
  //  QSpinBox *spinBox = static_cast<QSpinBox*>(editor);
213
  //  QSpinBox *spinBox = static_cast<QSpinBox*>(editor);
214
  //  spinBox->interpretText();
214
  //  spinBox->interpretText();
215
  //  int value = spinBox->value();
215
  //  int value = spinBox->value();
216
216
217
  //  model->setData(index, value, Qt::EditRole);
217
  //  model->setData(index, value, Qt::EditRole);
218
    QStringList ID_list;
218
    QStringList ID_list;
219
    QStringList Name_list;
219
    QStringList Name_list;
220
220
221
    QComboBox *comboBox = static_cast<QComboBox*>(editor);
221
    QComboBox *comboBox = static_cast<QComboBox*>(editor);
222
    int currIndex;
222
    int currIndex;
223
    currIndex = comboBox->currentIndex();
223
    currIndex = comboBox->currentIndex();
224
    if (currIndex==-1) return;
224
    if (currIndex==-1) return;
225
  //  QString value = comboBox->itemText(currIndex);
225
  //  QString value = comboBox->itemText(currIndex);
226
226
227
    ID_list = items.keys();
227
    ID_list = items.keys();
228
    Name_list = items.values();
228
    Name_list = items.values();
229
229
230
    QString value = ID_list.at(currIndex);
230
    QString value = ID_list.at(currIndex);
231
    model->setData(index, value, Qt::EditRole);
231
    model->setData(index, value, Qt::EditRole);
232
}
232
}
233
//! [3]
233
//! [3]
234
234
235
//! [4]
235
//! [4]
236
void SpinBoxDelegate::updateEditorGeometry(QWidget *editor,
236
void SpinBoxDelegate::updateEditorGeometry(QWidget *editor,
237
    const QStyleOptionViewItem &option, const QModelIndex &/* index */) const
237
    const QStyleOptionViewItem &option, const QModelIndex &/* index */) const
238
{
238
{
239
    editor->setGeometry(option.rect);
239
    editor->setGeometry(option.rect);
240
}
240
}
241
241
242
242
243
243
244
244
245
245
246
246
247
247
248
248
249
249
250
250
251
251
252
//! [0]
252
//! [0]
253
FilterSpinBoxDelegate::FilterSpinBoxDelegate(QObject *parent)
253
FilterSpinBoxDelegate::FilterSpinBoxDelegate(QObject *parent)
254
    : QItemDelegate(parent)
254
    : QItemDelegate(parent)
255
{
255
{
256
}
256
}
257
//! [0]
257
//! [0]
258
258
259
void FilterSpinBoxDelegate::setClassID(QString newClassID){
259
void FilterSpinBoxDelegate::setClassID(QString newClassID){
260
    class_id = newClassID;
260
    class_id = newClassID;
261
}
261
}
262
262
263
void FilterSpinBoxDelegate::getItems(){
263
void FilterSpinBoxDelegate::getItems(){
264
    QMap <QString, QString> result_map;
264
    QMap <QString, QString> result_map;
265
    QSqlQuery q;
265
    QSqlQuery q;
266
    QString query_str;
266
    QString query_str;
267
    bool ok;
267
    bool ok;
268
268
269
    if (FilterSpinBoxDelegate::class_id.isEmpty())
269
    if (FilterSpinBoxDelegate::class_id.isEmpty())
270
    {
270
    {
271
        items.clear();
271
        items.clear();
272
        return;
272
        return;
273
    }
273
    }
274
274
275
    query_str = tr("select * from `DescriptionOfClasses` where `ClassIdentifer` = '");
275
    query_str = tr("select * from `DescriptionOfClasses` where `ClassIdentifer` = '");
276
    query_str.append(class_id);
276
    query_str.append(class_id);
277
    query_str.append( tr("'"));
277
    query_str.append( tr("'"));
278
278
279
    q.prepare(query_str);
279
    q.prepare(query_str);
280
280
281
281
282
    ok = q.exec();
282
    ok = q.exec();
283
283
284
284
285
285
286
286
287
    if (!ok) {
287
    if (!ok) {
288
                            /*
288
                            /*
289
                            QString error_str;
289
                            QString error_str;
290
                            error_str =  tr("íå óäàëîñü ïîëó÷èòü ñïèñîê îáúåêòîâ èç òàáëèöû ");
290
                            error_str =  tr("íå óäàëîñü ïîëó÷èòü ñïèñîê îáúåêòîâ èç òàáëèöû ");
291
                            error_str.append(inctance);
291
                            error_str.append(inctance);
292
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
292
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
293
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
293
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
294
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
294
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
295
                                                                            q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
295
                                                                            q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
296
                                                                        //    tr("íå óäàëîñü ïîëó÷èòü ñïèñîê îáúåêòîâ èç òàáëèöû "));    // Òåêñò ñîîáùåíèÿ.
296
                                                                        //    tr("íå óäàëîñü ïîëó÷èòü ñïèñîê îáúåêòîâ èç òàáëèöû "));    // Òåêñò ñîîáùåíèÿ.
297

297

298
                            */
298
                            */
299
                            items.clear();
299
                            items.clear();
300
                            return;
300
                            return;
301
                        }
301
                        }
302
302
303
303
304
 //   field_inctance = q.record().indexOf(tr("TableWhithInstance"));
304
 //   field_inctance = q.record().indexOf(tr("TableWhithInstance"));
305
    items.clear();
305
    items.clear();
306
    while(q.next()){
306
    while(q.next()){
307
307
308
                  QString ID;
308
                  QString ID;
309
                  QString Name;
309
                  QString Name;
310
                  ID = q.value(0).toString(); // îïðåäåëÿåì ID
310
                  ID = q.value(0).toString(); // îïðåäåëÿåì ID
311
                  Name = q.value(1).toString(); // îïðåäåëÿåì Name
311
                  Name = q.value(1).toString(); // îïðåäåëÿåì Name
312
                  items.insert(ID, Name);
312
                  items.insert(ID, Name);
313
                }
313
                }
314
314
315
315
316
 //   return result_map;
316
 //   return result_map;
317
}
317
}
318
318
319
319
320
//! [1]
320
//! [1]
321
QWidget *FilterSpinBoxDelegate::createEditor(QWidget *parent,
321
QWidget *FilterSpinBoxDelegate::createEditor(QWidget *parent,
322
    const QStyleOptionViewItem &/* option */,
322
    const QStyleOptionViewItem &/* option */,
323
    const QModelIndex &/* index */) const
323
    const QModelIndex &/* index */) const
324
{
324
{
325
    //QSpinBox *editor = new QSpinBox(parent);
325
    //QSpinBox *editor = new QSpinBox(parent);
326
    //editor->setMinimum(0);
326
    //editor->setMinimum(0);
327
    //editor->setMaximum(100);
327
    //editor->setMaximum(100);
328
    QStringList ID_list;
328
    QStringList ID_list;
329
    QStringList Name_list;
329
    QStringList Name_list;
330
330
331
  // getItems();
331
  // getItems();
332
332
333
333
334
334
335
335
336
336
337
    ID_list = items.keys();
337
    ID_list = items.keys();
338
    Name_list = items.values();
338
    Name_list = items.values();
339
339
340
    QComboBox *editor = new QComboBox(parent);
340
    QComboBox *editor = new QComboBox(parent);
341
341
342
/*
342
/*
343
    editor->addItem("0");
343
    editor->addItem("0");
344
    editor->addItem("1");
344
    editor->addItem("1");
345
    editor->addItem("2");
345
    editor->addItem("2");
346
    editor->addItem("3");
346
    editor->addItem("3");
347
    editor->addItem("4");
347
    editor->addItem("4");
348
    editor->addItem("5");
348
    editor->addItem("5");
349
    editor->addItem("6");
349
    editor->addItem("6");
350
    editor->addItem("7");
350
    editor->addItem("7");
351
    editor->addItem("8");
351
    editor->addItem("8");
352
    editor->addItem("9");
352
    editor->addItem("9");
353
*/
353
*/
354
354
355
//  editor->addItem("0");
355
//  editor->addItem("0");
356
356
357
    editor->addItems(Name_list);
357
    editor->addItems(Name_list);
358
//    editor->setEditable(false);
358
//    editor->setEditable(false);
359
    return editor;
359
    return editor;
360
}
360
}
361
//! [1]
361
//! [1]
362
362
363
//! [2]
363
//! [2]
364
void FilterSpinBoxDelegate::setEditorData(QWidget *editor,
364
void FilterSpinBoxDelegate::setEditorData(QWidget *editor,
365
                                    const QModelIndex &index) const
365
                                    const QModelIndex &index) const
366
{
366
{
367
   // int value = index.model()->data(index, Qt::EditRole).toInt();
367
   // int value = index.model()->data(index, Qt::EditRole).toInt();
368
368
369
 //   QSpinBox *spinBox = static_cast<QSpinBox*>(editor);
369
 //   QSpinBox *spinBox = static_cast<QSpinBox*>(editor);
370
 //   spinBox->setValue(value);
370
 //   spinBox->setValue(value);
371
QString value = index.model()->data(index, Qt::EditRole).toString();
371
QString value = index.model()->data(index, Qt::EditRole).toString();
372
372
373
QComboBox *comboBox = static_cast<QComboBox*>(editor);
373
QComboBox *comboBox = static_cast<QComboBox*>(editor);
374
374
375
QStringList ID_list;
375
QStringList ID_list;
376
QStringList Name_list;
376
QStringList Name_list;
377
int curr_index;
377
int curr_index;
378
378
379
ID_list = items.keys();
379
ID_list = items.keys();
380
Name_list = items.values();
380
Name_list = items.values();
381
381
382
curr_index = ID_list.indexOf(value);
382
curr_index = ID_list.indexOf(value);
383
if (curr_index==-1) return;
383
if (curr_index==-1) return;
384
comboBox->setCurrentIndex(curr_index);
384
comboBox->setCurrentIndex(curr_index);
385
/****************************************************
385
/****************************************************
386
if (value == "0") comboBox->setCurrentIndex(0);
386
if (value == "0") comboBox->setCurrentIndex(0);
387
if (value == "1") comboBox->setCurrentIndex(1);
387
if (value == "1") comboBox->setCurrentIndex(1);
388
if (value == "2") comboBox->setCurrentIndex(2);
388
if (value == "2") comboBox->setCurrentIndex(2);
389
if (value == "3") comboBox->setCurrentIndex(3);
389
if (value == "3") comboBox->setCurrentIndex(3);
390
if (value == "4") comboBox->setCurrentIndex(4);
390
if (value == "4") comboBox->setCurrentIndex(4);
391
if (value == "5") comboBox->setCurrentIndex(5);
391
if (value == "5") comboBox->setCurrentIndex(5);
392
if (value == "6") comboBox->setCurrentIndex(6);
392
if (value == "6") comboBox->setCurrentIndex(6);
393
if (value == "7") comboBox->setCurrentIndex(7);
393
if (value == "7") comboBox->setCurrentIndex(7);
394
if (value == "8") comboBox->setCurrentIndex(8);
394
if (value == "8") comboBox->setCurrentIndex(8);
395
if (value == "9") comboBox->setCurrentIndex(9);
395
if (value == "9") comboBox->setCurrentIndex(9);
396
******************************************************/
396
******************************************************/
397
comboBox->setEditable(false);
397
comboBox->setEditable(false);
398
398
399
399
400
//comboBox->setItemText(0, value);
400
//comboBox->setItemText(0, value);
401
401
402
}
402
}
403
//! [2]
403
//! [2]
404
404
405
//! [3]
405
//! [3]
406
void FilterSpinBoxDelegate::setModelData(QWidget *editor, QAbstractItemModel *model,
406
void FilterSpinBoxDelegate::setModelData(QWidget *editor, QAbstractItemModel *model,
407
                                   const QModelIndex &index) const
407
                                   const QModelIndex &index) const
408
{
408
{
409
  //  QSpinBox *spinBox = static_cast<QSpinBox*>(editor);
409
  //  QSpinBox *spinBox = static_cast<QSpinBox*>(editor);
410
  //  spinBox->interpretText();
410
  //  spinBox->interpretText();
411
  //  int value = spinBox->value();
411
  //  int value = spinBox->value();
412
412
413
  //  model->setData(index, value, Qt::EditRole);
413
  //  model->setData(index, value, Qt::EditRole);
414
    QStringList ID_list;
414
    QStringList ID_list;
415
    QStringList Name_list;
415
    QStringList Name_list;
416
416
417
    QComboBox *comboBox = static_cast<QComboBox*>(editor);
417
    QComboBox *comboBox = static_cast<QComboBox*>(editor);
418
    int currIndex;
418
    int currIndex;
419
    currIndex = comboBox->currentIndex();
419
    currIndex = comboBox->currentIndex();
420
    if (currIndex==-1) return;
420
    if (currIndex==-1) return;
421
  //  QString value = comboBox->itemText(currIndex);
421
  //  QString value = comboBox->itemText(currIndex);
422
422
423
    ID_list = items.keys();
423
    ID_list = items.keys();
424
    Name_list = items.values();
424
    Name_list = items.values();
425
425
426
 //   QString value = ID_list.at(currIndex);
426
 //   QString value = ID_list.at(currIndex);
427
    QString value = Name_list.at(currIndex);
427
    QString value = Name_list.at(currIndex);
428
    model->setData(index, value, Qt::EditRole);
428
    model->setData(index, value, Qt::EditRole);
429
}
429
}
430
//! [3]
430
//! [3]
431
431
432
//! [4]
432
//! [4]
433
void FilterSpinBoxDelegate::updateEditorGeometry(QWidget *editor,
433
void FilterSpinBoxDelegate::updateEditorGeometry(QWidget *editor,
434
    const QStyleOptionViewItem &option, const QModelIndex &/* index */) const
434
    const QStyleOptionViewItem &option, const QModelIndex &/* index */) const
435
{
435
{
436
    editor->setGeometry(option.rect);
436
    editor->setGeometry(option.rect);
437
}
437
}
438
438
439
439
440
440
441
441
442
442
443
443
444
444
445
445
446
446
447
447
448
//! [0]
448
//! [0]
449
FilterConditionDelegate::FilterConditionDelegate(QObject *parent)
449
FilterConditionDelegate::FilterConditionDelegate(QObject *parent)
450
    : QItemDelegate(parent)
450
    : QItemDelegate(parent)
451
{
451
{
452
}
452
}
453
//! [0]
453
//! [0]
454
454
455
void FilterConditionDelegate::setClassID(QString newClassID){
455
void FilterConditionDelegate::setClassID(QString newClassID){
456
    class_id = newClassID;
456
    class_id = newClassID;
457
}
457
}
458
458
459
459
460
460
461
//! [1]
461
//! [1]
462
QWidget *FilterConditionDelegate::createEditor(QWidget *parent,
462
QWidget *FilterConditionDelegate::createEditor(QWidget *parent,
463
    const QStyleOptionViewItem &/* option */,
463
    const QStyleOptionViewItem &/* option */,
464
    const QModelIndex &/* index */) const
464
    const QModelIndex &/* index */) const
465
{
465
{
466
    QStringList Name_list;
466
    QStringList Name_list;
467
467
468
    Name_list = items;
468
    Name_list = items;
469
469
470
    QComboBox *editor = new QComboBox(parent);
470
    QComboBox *editor = new QComboBox(parent);
471
471
472
/*
472
/*
473
    editor->addItem("0");
473
    editor->addItem("0");
474
    editor->addItem("1");
474
    editor->addItem("1");
475
    editor->addItem("2");
475
    editor->addItem("2");
476
    editor->addItem("3");
476
    editor->addItem("3");
477
    editor->addItem("4");
477
    editor->addItem("4");
478
    editor->addItem("5");
478
    editor->addItem("5");
479
    editor->addItem("6");
479
    editor->addItem("6");
480
    editor->addItem("7");
480
    editor->addItem("7");
481
    editor->addItem("8");
481
    editor->addItem("8");
482
    editor->addItem("9");
482
    editor->addItem("9");
483
*/
483
*/
484
484
485
//  editor->addItem("0");
485
//  editor->addItem("0");
486
486
487
    editor->addItems(Name_list);
487
    editor->addItems(Name_list);
488
//    editor->setEditable(false);
488
//    editor->setEditable(false);
489
    return editor;
489
    return editor;
490
}
490
}
491
//! [1]
491
//! [1]
492
492
493
//! [2]
493
//! [2]
494
void FilterConditionDelegate::setEditorData(QWidget *editor,
494
void FilterConditionDelegate::setEditorData(QWidget *editor,
495
                                    const QModelIndex &index) const
495
                                    const QModelIndex &index) const
496
{
496
{
497
   // int value = index.model()->data(index, Qt::EditRole).toInt();
497
   // int value = index.model()->data(index, Qt::EditRole).toInt();
498
498
499
 //   QSpinBox *spinBox = static_cast<QSpinBox*>(editor);
499
 //   QSpinBox *spinBox = static_cast<QSpinBox*>(editor);
500
 //   spinBox->setValue(value);
500
 //   spinBox->setValue(value);
501
QString value = index.model()->data(index, Qt::EditRole).toString();
501
QString value = index.model()->data(index, Qt::EditRole).toString();
502
502
503
QComboBox *comboBox = static_cast<QComboBox*>(editor);
503
QComboBox *comboBox = static_cast<QComboBox*>(editor);
504
504
505
//QStringList ID_list;
505
//QStringList ID_list;
506
//QStringList Name_list;
506
//QStringList Name_list;
507
int curr_index;
507
int curr_index;
508
508
509
//ID_list = items.keys();
509
//ID_list = items.keys();
510
//Name_list = items.values();
510
//Name_list = items.values();
511
511
512
curr_index = items.indexOf(value);
512
curr_index = items.indexOf(value);
513
if (curr_index==-1) return;
513
if (curr_index==-1) return;
514
comboBox->setCurrentIndex(curr_index);
514
comboBox->setCurrentIndex(curr_index);
515
/****************************************************
515
/****************************************************
516
if (value == "0") comboBox->setCurrentIndex(0);
516
if (value == "0") comboBox->setCurrentIndex(0);
517
if (value == "1") comboBox->setCurrentIndex(1);
517
if (value == "1") comboBox->setCurrentIndex(1);
518
if (value == "2") comboBox->setCurrentIndex(2);
518
if (value == "2") comboBox->setCurrentIndex(2);
519
if (value == "3") comboBox->setCurrentIndex(3);
519
if (value == "3") comboBox->setCurrentIndex(3);
520
if (value == "4") comboBox->setCurrentIndex(4);
520
if (value == "4") comboBox->setCurrentIndex(4);
521
if (value == "5") comboBox->setCurrentIndex(5);
521
if (value == "5") comboBox->setCurrentIndex(5);
522
if (value == "6") comboBox->setCurrentIndex(6);
522
if (value == "6") comboBox->setCurrentIndex(6);
523
if (value == "7") comboBox->setCurrentIndex(7);
523
if (value == "7") comboBox->setCurrentIndex(7);
524
if (value == "8") comboBox->setCurrentIndex(8);
524
if (value == "8") comboBox->setCurrentIndex(8);
525
if (value == "9") comboBox->setCurrentIndex(9);
525
if (value == "9") comboBox->setCurrentIndex(9);
526
******************************************************/
526
******************************************************/
527
comboBox->setEditable(false);
527
comboBox->setEditable(false);
528
528
529
529
530
//comboBox->setItemText(0, value);
530
//comboBox->setItemText(0, value);
531
531
532
}
532
}
533
//! [2]
533
//! [2]
534
534
535
//! [3]
535
//! [3]
536
void FilterConditionDelegate::setModelData(QWidget *editor, QAbstractItemModel *model,
536
void FilterConditionDelegate::setModelData(QWidget *editor, QAbstractItemModel *model,
537
                                   const QModelIndex &index) const
537
                                   const QModelIndex &index) const
538
{
538
{
539
  //  QSpinBox *spinBox = static_cast<QSpinBox*>(editor);
539
  //  QSpinBox *spinBox = static_cast<QSpinBox*>(editor);
540
  //  spinBox->interpretText();
540
  //  spinBox->interpretText();
541
  //  int value = spinBox->value();
541
  //  int value = spinBox->value();
542
542
543
  //  model->setData(index, value, Qt::EditRole);
543
  //  model->setData(index, value, Qt::EditRole);
544
    QStringList ID_list;
544
    QStringList ID_list;
545
    QStringList Name_list;
545
    QStringList Name_list;
546
546
547
    QComboBox *comboBox = static_cast<QComboBox*>(editor);
547
    QComboBox *comboBox = static_cast<QComboBox*>(editor);
548
    int currIndex;
548
    int currIndex;
549
    currIndex = comboBox->currentIndex();
549
    currIndex = comboBox->currentIndex();
550
    if (currIndex==-1) return;
550
    if (currIndex==-1) return;
551
  //  QString value = comboBox->itemText(currIndex);
551
  //  QString value = comboBox->itemText(currIndex);
552
552
553
    // ID_list = items.keys();
553
    // ID_list = items.keys();
554
    // Name_list = items.values();
554
    // Name_list = items.values();
555
555
556
 //   QString value = ID_list.at(currIndex);
556
 //   QString value = ID_list.at(currIndex);
557
    QString value = items.at(currIndex);
557
    QString value = items.at(currIndex);
558
    model->setData(index, value, Qt::EditRole);
558
    model->setData(index, value, Qt::EditRole);
559
}
559
}
560
//! [3]
560
//! [3]
561
561
562
//! [4]
562
//! [4]
563
void FilterConditionDelegate::updateEditorGeometry(QWidget *editor,
563
void FilterConditionDelegate::updateEditorGeometry(QWidget *editor,
564
    const QStyleOptionViewItem &option, const QModelIndex &/* index */) const
564
    const QStyleOptionViewItem &option, const QModelIndex &/* index */) const
565
{
565
{
566
    editor->setGeometry(option.rect);
566
    editor->setGeometry(option.rect);
567
}
567
}
568
568
569
569
570
570
571
571
572
572
573
573
574
574
575
575
576
576
577
577
578
FilterValueDelegate::FilterValueDelegate(QObject *parent)
578
FilterValueDelegate::FilterValueDelegate(QObject *parent)
579
    : QItemDelegate(parent)
579
    : QItemDelegate(parent)
580
{
580
{
581
}
581
}
582
//! [0]
582
//! [0]
583
583
584
void FilterValueDelegate::setClassID(QString newClassID){
584
void FilterValueDelegate::setClassID(QString newClassID){
585
    class_id = newClassID;
585
    class_id = newClassID;
586
}
586
}
587
587
588
588
589
589
-
 
590
// ïîëó÷àåì èìÿ òàáëèöû - õðàíèëèùà îáúåêòîâ êëàññà
-
 
591
QString FilterValueDelegate::getClassInctanc(QString class_id){
-
 
592
-
 
593
-
 
594
-
 
595
-
 
596
    QSqlQuery q;
-
 
597
    QString sql_str;
-
 
598
    QString result;
-
 
599
    QString classInctance;
-
 
600
    int field_inctance;
-
 
601
    bool ok;
-
 
602
    sql_str = tr("select * "
-
 
603
                 " from ListOfClasses where  ListOfClasses.ID = '"       //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì
-
 
604
                 );
-
 
605
    sql_str.append(class_id);
-
 
606
     sql_str.append(tr("'"));
-
 
607
    q.prepare(sql_str);
-
 
608
-
 
609
    ok = q.exec();
-
 
610
-
 
611
    if (!ok) return result;
-
 
612
-
 
613
    /*
-
 
614
    if (!ok) {
-
 
615
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
-
 
616
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
-
 
617
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
-
 
618
                                                                            q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
-
 
619
                                                                            return result;
-
 
620
                     }
-
 
621

-
 
622
   */
-
 
623
-
 
624
-
 
625
-
 
626
-
 
627
    field_inctance = q.record().indexOf(tr("TableWhithInstance"));
-
 
628
    while(q.next()){
-
 
629
-
 
630
                  classInctance = q.value(field_inctance).toString();
-
 
631
                  result.append(classInctance);
-
 
632
                  }
-
 
633
-
 
634
  return result;
-
 
635
-
 
636
-
 
637
-
 
638
-
 
639
-
 
640
}
-
 
641
-
 
642
-
 
643
-
 
644
 QString grtFieldType(QString class_id, QString fieldName)//îïðåäåëÿåì òèï äàííûõ ïîëÿ
-
 
645
 {
-
 
646
-
 
647
 }
-
 
648
-
 
649
590
//! [1]
650
//! [1]
591
QWidget *FilterValueDelegate::createEditor(QWidget *parent,
651
QWidget *FilterValueDelegate::createEditor(QWidget *parent,
592
    const QStyleOptionViewItem &/* option */,
652
    const QStyleOptionViewItem &/* option */,
593
    const QModelIndex &/* index */) const
653
    const QModelIndex &/* index */) const
594
{
654
{
595
    QStringList Name_list;
655
    QStringList Name_list;
596
656
597
    Name_list = items;
657
    Name_list = items;
598
658
599
    QComboBox *editor = new QComboBox(parent);
659
    QComboBox *editor = new QComboBox(parent);
600
660
601
/*
661
/*
602
    editor->addItem("0");
662
    editor->addItem("0");
603
    editor->addItem("1");
663
    editor->addItem("1");
604
    editor->addItem("2");
664
    editor->addItem("2");
605
    editor->addItem("3");
665
    editor->addItem("3");
606
    editor->addItem("4");
666
    editor->addItem("4");
607
    editor->addItem("5");
667
    editor->addItem("5");
608
    editor->addItem("6");
668
    editor->addItem("6");
609
    editor->addItem("7");
669
    editor->addItem("7");
610
    editor->addItem("8");
670
    editor->addItem("8");
611
    editor->addItem("9");
671
    editor->addItem("9");
612
*/
672
*/
613
673
614
//  editor->addItem("0");
674
//  editor->addItem("0");
615
675
616
// // //    editor->addItems(Name_list);
676
// // //    editor->addItems(Name_list);
617
//    editor->setEditable(false);
677
    editor->setEditable(true);
618
    return editor;
678
    return editor;
619
}
679
}
620
//! [1]
680
//! [1]
621
681
-
 
682
-
 
683
-
 
684
-
 
685
-
 
686
-
 
687
-
 
688
-
 
689
-
 
690
622
//! [2]
691
//! [2]
623
void FilterValueDelegate::setEditorData(QWidget *editor,
692
void FilterValueDelegate::setEditorData(QWidget *editor,
624
                                    const QModelIndex &index) const
693
                                    const QModelIndex &index) const
625
{
694
{
626
   // int value = index.model()->data(index, Qt::EditRole).toInt();
695
   // int value = index.model()->data(index, Qt::EditRole).toInt();
627
696
628
 //   QSpinBox *spinBox = static_cast<QSpinBox*>(editor);
697
 //   QSpinBox *spinBox = static_cast<QSpinBox*>(editor);
629
 //   spinBox->setValue(value);
698
 //   spinBox->setValue(value);
630
699
631
700
632
const QAbstractItemModel * model = index.model();
701
const QAbstractItemModel * model = index.model();
633
702
634
703
635
QString value = index.model()->data(index, Qt::EditRole).toString();
704
QString value = index.model()->data(index, Qt::EditRole).toString();
636
QString class_id = index.model()->data(model->index(index.row(),2), Qt::EditRole).toString();
705
QString class_id = index.model()->data(model->index(index.row(),2), Qt::EditRole).toString();
637
QComboBox *comboBox = static_cast<QComboBox*>(editor);
706
QComboBox *comboBox = static_cast<QComboBox*>(editor);
-
 
707
QString inctance; //õðàíèëèùå îáúåêòîâ êëàññà
-
 
708
QString fieldName;//èìÿ ïîëÿ
-
 
709
QSqlQuery q;
-
 
710
QString sql_str;
-
 
711
QStringList itemsList;
-
 
712
bool ok;
-
 
713
-
 
714
-
 
715
-
 
716
fieldName = index.model()->data(model->index(index.row(),4), Qt::EditRole).toString();
-
 
717
-
 
718
-
 
719
inctance = FilterValueDelegate::getClassInctanc(class_id);
-
 
720
if (!inctance.isEmpty() && !fieldName.isEmpty()){
-
 
721
sql_str = tr("select `");
-
 
722
sql_str.append(fieldName);
-
 
723
sql_str.append(tr("` from `"));
-
 
724
sql_str.append(inctance);
-
 
725
sql_str.append(tr("`"));
-
 
726
ok = q.prepare(sql_str);
-
 
727
ok = q.exec();
-
 
728
-
 
729
while(q.next()){
-
 
730
QString tmp_str;
-
 
731
tmp_str = q.record().value(fieldName).asString();
-
 
732
itemsList.append(tmp_str);
-
 
733
FilterValueDelegate::items.append(tmp_str);
-
 
734
        }
-
 
735
if(!itemsList.isEmpty()) {
-
 
736
                            comboBox->addItems(itemsList);
-
 
737
                            items = itemsList; // ãëîáàëüãàÿ ïåðåìåííàÿ
-
 
738
                         }
-
 
739
-
 
740
}
-
 
741
-
 
742
-
 
743
-
 
744
638
745
639
//QStringList ID_list;
746
//QStringList ID_list;
640
//QStringList Name_list;
747
//QStringList Name_list;
641
int curr_index;
748
int curr_index;
642
749
643
//ID_list = items.keys();
750
//ID_list = items.keys();
644
//Name_list = items.values();
751
//Name_list = items.values();
645
752
646
curr_index = items.indexOf(value);
753
curr_index = itemsList.indexOf(value);
647
if (curr_index==-1) return;
754
if (curr_index==-1) return;
648
comboBox->setCurrentIndex(curr_index);
755
comboBox->setCurrentIndex(curr_index);
649
/****************************************************
756
/****************************************************
650
if (value == "0") comboBox->setCurrentIndex(0);
757
if (value == "0") comboBox->setCurrentIndex(0);
651
if (value == "1") comboBox->setCurrentIndex(1);
758
if (value == "1") comboBox->setCurrentIndex(1);
652
if (value == "2") comboBox->setCurrentIndex(2);
759
if (value == "2") comboBox->setCurrentIndex(2);
653
if (value == "3") comboBox->setCurrentIndex(3);
760
if (value == "3") comboBox->setCurrentIndex(3);
654
if (value == "4") comboBox->setCurrentIndex(4);
761
if (value == "4") comboBox->setCurrentIndex(4);
655
if (value == "5") comboBox->setCurrentIndex(5);
762
if (value == "5") comboBox->setCurrentIndex(5);
656
if (value == "6") comboBox->setCurrentIndex(6);
763
if (value == "6") comboBox->setCurrentIndex(6);
657
if (value == "7") comboBox->setCurrentIndex(7);
764
if (value == "7") comboBox->setCurrentIndex(7);
658
if (value == "8") comboBox->setCurrentIndex(8);
765
if (value == "8") comboBox->setCurrentIndex(8);
659
if (value == "9") comboBox->setCurrentIndex(9);
766
if (value == "9") comboBox->setCurrentIndex(9);
660
******************************************************/
767
******************************************************/
661
comboBox->setEditable(false);
768
comboBox->setEditable(true);
662
769
663
770
664
//comboBox->setItemText(0, value);
771
//comboBox->setItemText(0, value);
665
772
666
}
773
}
667
//! [2]
774
//! [2]
668
775
669
//! [3]
776
//! [3]
670
void FilterValueDelegate::setModelData(QWidget *editor, QAbstractItemModel *model,
777
void FilterValueDelegate::setModelData(QWidget *editor, QAbstractItemModel *model,
671
                                   const QModelIndex &index) const
778
                                   const QModelIndex &index) const
672
{
779
{
673
  //  QSpinBox *spinBox = static_cast<QSpinBox*>(editor);
780
  //  QSpinBox *spinBox = static_cast<QSpinBox*>(editor);
674
  //  spinBox->interpretText();
781
  //  spinBox->interpretText();
675
  //  int value = spinBox->value();
782
  //  int value = spinBox->value();
676
783
677
  //  model->setData(index, value, Qt::EditRole);
784
  //  model->setData(index, value, Qt::EditRole);
-
 
785
678
    QStringList ID_list;
786
    QStringList ID_list;
679
    QStringList Name_list;
787
    QStringList Name_list;
680
788
681
    QComboBox *comboBox = static_cast<QComboBox*>(editor);
789
    QComboBox *comboBox = static_cast<QComboBox*>(editor);
682
    int currIndex;
790
    int currIndex;
683
    currIndex = comboBox->currentIndex();
791
    currIndex = comboBox->currentIndex();
684
    if (currIndex==-1) return;
792
    if (currIndex==-1) return;
685
  //  QString value = comboBox->itemText(currIndex);
793
  //  QString value = comboBox->itemText(currIndex);
686
794
687
    // ID_list = items.keys();
795
    // ID_list = items.keys();
688
    // Name_list = items.values();
796
    // Name_list = items.values();
689
797
690
 //   QString value = ID_list.at(currIndex);
798
 //   QString value = ID_list.at(currIndex);
691
    QString value = items.at(currIndex);
799
    QString value = items.at(currIndex);
692
    model->setData(index, value, Qt::EditRole);
800
    model->setData(index, value, Qt::EditRole);
-
 
801
-
 
802
693
}
803
}
-
 
804
-
 
805
-
 
806
-
 
807
-
 
808
-
 
809
-
 
810
-
 
811
694
//! [3]
812
//! [3]
695
813
696
//! [4]
814
//! [4]
697
void FilterValueDelegate::updateEditorGeometry(QWidget *editor,
815
void FilterValueDelegate::updateEditorGeometry(QWidget *editor,
698
    const QStyleOptionViewItem &option, const QModelIndex &/* index */) const
816
    const QStyleOptionViewItem &option, const QModelIndex &/* index */) const
699
{
817
{
700
    editor->setGeometry(option.rect);
818
    editor->setGeometry(option.rect);
701
}
819
}
702
820
703
821
704
822
705
823
706
824
707
825
708
826
709
827
710
828
711
829
712
830
713
831
714
832
715
833
716
834
717
//! [4]
835
//! [4]
718
MyDEDelegate::MyDEDelegate(
836
MyDEDelegate::MyDEDelegate(
719
                       bool calpopup,
837
                       bool calpopup,
720
                       QObject *parent)
838
                       QObject *parent)
721
               : QItemDelegate(parent),
839
               : QItemDelegate(parent),
722
                 m_calpopup(calpopup) {
840
                 m_calpopup(calpopup) {
723
   }
841
   }
724
842
725
   QWidget *MyDEDelegate::createEditor(
843
   QWidget *MyDEDelegate::createEditor(
726
               QWidget *parent,
844
               QWidget *parent,
727
               const QStyleOptionViewItem& /* option */,
845
               const QStyleOptionViewItem& /* option */,
728
               const QModelIndex& /* index */) const {
846
               const QModelIndex& /* index */) const {
729
       QDateEdit *editor = new QDateEdit(parent);
847
       QDateEdit *editor = new QDateEdit(parent);
730
       editor->setCalendarPopup(m_calpopup);
848
       editor->setCalendarPopup(m_calpopup);
731
       editor->installEventFilter(const_cast<MyDEDelegate*>(this));
849
       editor->installEventFilter(const_cast<MyDEDelegate*>(this));
732
       return editor;
850
       return editor;
733
   }
851
   }
734
852
735
   void MyDEDelegate::setEditorData(
853
   void MyDEDelegate::setEditorData(
736
                   QWidget *editor,
854
                   QWidget *editor,
737
                   const QModelIndex &index) const {
855
                   const QModelIndex &index) const {
738
       QDate value = index.model()->data(
856
       QDate value = index.model()->data(
739
               index, Qt::EditRole).toDate();
857
               index, Qt::EditRole).toDate();
740
       QDateEdit *de = static_cast<QDateEdit*>(editor);
858
       QDateEdit *de = static_cast<QDateEdit*>(editor);
741
       de->setDate(value);
859
       de->setDate(value);
742
   }
860
   }
743
861
744
   void MyDEDelegate::setModelData(
862
   void MyDEDelegate::setModelData(
745
               QWidget *editor,
863
               QWidget *editor,
746
               QAbstractItemModel *model,
864
               QAbstractItemModel *model,
747
               const QModelIndex& index) const {
865
               const QModelIndex& index) const {
748
       QDateEdit *de = static_cast<QDateEdit*>(editor);
866
       QDateEdit *de = static_cast<QDateEdit*>(editor);
749
       de->interpretText();
867
       de->interpretText();
750
       QDate value = de->date();
868
       QDate value = de->date();
751
       model->setData(index, value);
869
       model->setData(index, value);
752
   }
870
   }
753
871
754
   void MyDEDelegate::updateEditorGeometry(
872
   void MyDEDelegate::updateEditorGeometry(
755
               QWidget *editor,
873
               QWidget *editor,
756
               const QStyleOptionViewItem &option,
874
               const QStyleOptionViewItem &option,
757
               const QModelIndex& /* index */) const {
875
               const QModelIndex& /* index */) const {
758
876
759
877
760
878
761
       editor->setGeometry(option.rect);
879
       editor->setGeometry(option.rect);
762
   }
880
   }
763
881
764
882
765
883
766
884
767
885
768
   CPictureDelegate::CPictureDelegate( QObject * parent ) : QItemDelegate(parent)
886
   CPictureDelegate::CPictureDelegate( QObject * parent ) : QItemDelegate(parent)
769
   {
887
   {
770
   }
888
   }
771
889
772
   void CPictureDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
890
   void CPictureDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
773
   {
891
   {
774
           m_pxPicture.fill( QColor(Qt::white) );
892
           m_pxPicture.fill( QColor(Qt::white) );
775
893
776
           const QAbstractItemModel * model = index.model();
894
           const QAbstractItemModel * model = index.model();
777
           QString sFileName = model->data( index, Qt::DisplayRole ).toString();
895
           QString sFileName = model->data( index, Qt::DisplayRole ).toString();
778
896
779
           if ( !sFileName.isEmpty() )
897
           if ( !sFileName.isEmpty() )
780
                   m_pxPicture.load( sFileName );
898
                   m_pxPicture.load( sFileName );
781
           else {
899
           else {
782
               //QItemDelegate::paint(painter, option, index);
900
               //QItemDelegate::paint(painter, option, index);
783
           return;
901
           return;
784
           }
902
           }
785
903
786
           QPalette::ColorGroup cg = (option.state & QStyle::State_Enabled) ?
904
           QPalette::ColorGroup cg = (option.state & QStyle::State_Enabled) ?
787
                                                             ((option.state & QStyle::State_Active) ? QPalette::Normal : QPalette::Inactive ) :
905
                                                             ((option.state & QStyle::State_Active) ? QPalette::Normal : QPalette::Inactive ) :
788
                                                             QPalette::Disabled;
906
                                                             QPalette::Disabled;
789
907
790
            if (option.state & QStyle::State_Selected)
908
            if (option.state & QStyle::State_Selected)
791
                    painter->fillRect(option.rect, option.palette.color(cg, QPalette::Highlight));
909
                    painter->fillRect(option.rect, option.palette.color(cg, QPalette::Highlight));
792
910
793
           int nX = option.rect.x() + ( ( option.rect.width() - m_pxPicture.rect().width() ) / 2 );
911
           int nX = option.rect.x() + ( ( option.rect.width() - m_pxPicture.rect().width() ) / 2 );
794
           int nY = option.rect.y() + ( ( option.rect.height() - m_pxPicture.rect().height() ) / 2 );
912
           int nY = option.rect.y() + ( ( option.rect.height() - m_pxPicture.rect().height() ) / 2 );
795
           painter->drawPixmap( nX, nY, m_pxPicture );
913
           painter->drawPixmap( nX, nY, m_pxPicture );
796
914
797
915
798
       ////    drawFocus(painter, option, option.rect.adjusted(0, 0, -1, -1)); // since we draw the grid ourselves
916
       ////    drawFocus(painter, option, option.rect.adjusted(0, 0, -1, -1)); // since we draw the grid ourselves
799
917
800
           /*
918
           /*
801
           QPen pen = painter->pen();
919
           QPen pen = painter->pen();
802
           painter->setPen(option.palette.color(QPalette::Mid));
920
           painter->setPen(option.palette.color(QPalette::Mid));
803
           painter->drawLine(option.rect.bottomLeft(), option.rect.bottomRight());
921
           painter->drawLine(option.rect.bottomLeft(), option.rect.bottomRight());
804
           painter->drawLine(option.rect.topRight(), option.rect.bottomRight());
922
           painter->drawLine(option.rect.topRight(), option.rect.bottomRight());
805
           painter->setPen(pen);
923
           painter->setPen(pen);
806
   */
924
   */
807
   }
925
   }
808
926
809
927
810
928
811
929
812
   void TimeEditDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,
930
   void TimeEditDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,
813
                            const QModelIndex &index) const
931
                            const QModelIndex &index) const
814
   {
932
   {
815
       int datetime = index.model()->data(index, Qt::DisplayRole).toInt();
933
       int datetime = index.model()->data(index, Qt::DisplayRole).toInt();
816
934
817
       QString indexvalue = "";
935
       QString indexvalue = "";
818
936
819
       if (datetime > 0)
937
       if (datetime > 0)
820
       {
938
       {
821
           QDateTime dateTime2 = QDateTime();
939
           QDateTime dateTime2 = QDateTime();
822
           dateTime2.setTime_t(datetime);
940
           dateTime2.setTime_t(datetime);
823
           indexvalue = dateTime2.toString(this->timeformat);
941
           indexvalue = dateTime2.toString(this->timeformat);
824
       }
942
       }
825
       else
943
       else
826
       {
944
       {
827
           indexvalue = tr("Date not set");
945
           indexvalue = tr("Date not set");
828
       }
946
       }
829
947
830
       Q_ASSERT(index.isValid());
948
       Q_ASSERT(index.isValid());
831
949
832
       QStyleOptionViewItemV3 opt = setOptions(index, option);
950
       QStyleOptionViewItemV3 opt = setOptions(index, option);
833
951
834
       const QStyleOptionViewItemV2 *v2 = qstyleoption_cast<const QStyleOptionViewItemV2 *>(&option);
952
       const QStyleOptionViewItemV2 *v2 = qstyleoption_cast<const QStyleOptionViewItemV2 *>(&option);
835
       opt.features = v2 ? v2->features
953
       opt.features = v2 ? v2->features
836
                       : QStyleOptionViewItemV2::ViewItemFeatures(QStyleOptionViewItemV2::None);
954
                       : QStyleOptionViewItemV2::ViewItemFeatures(QStyleOptionViewItemV2::None);
837
       const QStyleOptionViewItemV3 *v3 = qstyleoption_cast<const QStyleOptionViewItemV3 *>(&option);
955
       const QStyleOptionViewItemV3 *v3 = qstyleoption_cast<const QStyleOptionViewItemV3 *>(&option);
838
       opt.locale = v3 ? v3->locale : QLocale();
956
       opt.locale = v3 ? v3->locale : QLocale();
839
       opt.widget = v3 ? v3->widget : 0;
957
       opt.widget = v3 ? v3->widget : 0;
840
958
841
       // prepare
959
       // prepare
842
       painter->save();
960
       painter->save();
843
961
844
       painter->setClipRect(opt.rect);
962
       painter->setClipRect(opt.rect);
845
963
846
       // get the data and the rectangles
964
       // get the data and the rectangles
847
       QVariant value;
965
       QVariant value;
848
966
849
       QPixmap pixmap;
967
       QPixmap pixmap;
850
       QRect decorationRect;
968
       QRect decorationRect;
851
       value = index.data(Qt::DecorationRole);
969
       value = index.data(Qt::DecorationRole);
852
970
853
       QString text;
971
       QString text;
854
       QRect displayRect;
972
       QRect displayRect;
855
       value = index.data(Qt::DisplayRole);
973
       value = index.data(Qt::DisplayRole);
856
       if (value.isValid()) {
974
       if (value.isValid()) {
857
           text = indexvalue;
975
           text = indexvalue;
858
           displayRect = textRectangle(painter, option.rect, opt.font, text);
976
           displayRect = textRectangle(painter, option.rect, opt.font, text);
859
       }
977
       }
860
978
861
       QRect checkRect;
979
       QRect checkRect;
862
       Qt::CheckState checkState = Qt::Unchecked;
980
       Qt::CheckState checkState = Qt::Unchecked;
863
       value = index.data(Qt::CheckStateRole);
981
       value = index.data(Qt::CheckStateRole);
864
       if (value.isValid()) {
982
       if (value.isValid()) {
865
           checkState = static_cast<Qt::CheckState>(value.toInt());
983
           checkState = static_cast<Qt::CheckState>(value.toInt());
866
           checkRect = check(opt, opt.rect, value);
984
           checkRect = check(opt, opt.rect, value);
867
       }
985
       }
868
986
869
       // do the layout
987
       // do the layout
870
       doLayout(opt, &checkRect, &decorationRect, &displayRect, false);
988
       doLayout(opt, &checkRect, &decorationRect, &displayRect, false);
871
       // draw the item
989
       // draw the item
872
990
873
       drawBackground(painter, opt, index);
991
       drawBackground(painter, opt, index);
874
       drawCheck(painter, opt, checkRect, checkState);
992
       drawCheck(painter, opt, checkRect, checkState);
875
       drawDecoration(painter, opt, decorationRect, pixmap);
993
       drawDecoration(painter, opt, decorationRect, pixmap);
876
       drawDisplay(painter, opt, displayRect, text);
994
       drawDisplay(painter, opt, displayRect, text);
877
       drawFocus(painter, opt, displayRect);
995
       drawFocus(painter, opt, displayRect);
878
996
879
       // done
997
       // done
880
       painter->restore();
998
       painter->restore();
881
   }
999
   }
882
1000
883
1001
884
1002
885
1003
886
1004
887
1005
888
   IconDelegate::IconDelegate( QObject * parent ) : QItemDelegate(parent)
1006
   IconDelegate::IconDelegate( QObject * parent ) : QItemDelegate(parent)
889
   {
1007
   {
890
   }
1008
   }
891
1009
892
1010
893
1011
894
1012
895
1013
896
   QWidget *IconDelegate::createEditor(QWidget *parent,
1014
   QWidget *IconDelegate::createEditor(QWidget *parent,
897
       const QStyleOptionViewItem &/* option */,
1015
       const QStyleOptionViewItem &/* option */,
898
       const QModelIndex & /* index */) const
1016
       const QModelIndex & /* index */) const
899
   {
1017
   {
900
1018
901
       IconForm *editor = new IconForm(parent);
1019
       IconForm *editor = new IconForm(parent);
902
1020
903
       return editor;
1021
       return editor;
904
1022
905
   }
1023
   }
906
1024
907
1025
908
1026
909
1027
910
   void IconDelegate::setEditorData(QWidget *editor,
1028
   void IconDelegate::setEditorData(QWidget *editor,
911
                                       const QModelIndex &index) const
1029
                                       const QModelIndex &index) const
912
   {
1030
   {
913
1031
914
1032
915
       const QAbstractItemModel * model = index.model();
1033
       const QAbstractItemModel * model = index.model();
916
       IconForm *icnFrm = static_cast<IconForm*>(editor);
1034
       IconForm *icnFrm = static_cast<IconForm*>(editor);
917
       QVariant currentImage = model->data(index,0);
1035
       QVariant currentImage = model->data(index,0);
918
       QByteArray bytes = currentImage.toByteArray();
1036
       QByteArray bytes = currentImage.toByteArray();
919
       if (currentImage.isValid()) {
1037
       if (currentImage.isValid()) {
920
            m_pxPicture.loadFromData(bytes);
1038
            m_pxPicture.loadFromData(bytes);
921
       }
1039
       }
922
       else {
1040
       else {
923
           //QItemDelegate::paint(painter, option, index);
1041
           //QItemDelegate::paint(painter, option, index);
924
1042
925
1043
926
           return;
1044
           return;
927
       }
1045
       }
928
       icnFrm->setPixmap(m_pxPicture);
1046
       icnFrm->setPixmap(m_pxPicture);
929
     //  tblView->setRowHeight(index.row(), icnFrm->geometry().height());
1047
     //  tblView->setRowHeight(index.row(), icnFrm->geometry().height());
930
   }
1048
   }
931
1049
932
1050
933
1051
934
1052
935
   void IconDelegate::setModelData(
1053
   void IconDelegate::setModelData(
936
               QWidget *editor,
1054
               QWidget *editor,
937
               QAbstractItemModel *model,
1055
               QAbstractItemModel *model,
938
               const QModelIndex& index) const {
1056
               const QModelIndex& index) const {
939
       IconForm *icnFrm = static_cast<IconForm*>(editor);
1057
       IconForm *icnFrm = static_cast<IconForm*>(editor);
940
       if (!(icnFrm->dataIsChanged())) return;
1058
       if (!(icnFrm->dataIsChanged())) return;
941
1059
942
       m_pxPicture = icnFrm->pixmap();
1060
       m_pxPicture = icnFrm->pixmap();
943
       QImage currentImage = m_pxPicture.toImage();
1061
       QImage currentImage = m_pxPicture.toImage();
944
          QByteArray bytes;
1062
          QByteArray bytes;
945
          QBuffer buffer(&bytes);
1063
          QBuffer buffer(&bytes);
946
          buffer.open(QIODevice::WriteOnly);
1064
          buffer.open(QIODevice::WriteOnly);
947
          currentImage.save(&buffer, "PNG");
1065
          currentImage.save(&buffer, "PNG");
948
1066
949
1067
950
1068
951
1069
952
         model->setData(index, QVariant (bytes), Qt::EditRole);
1070
         model->setData(index, QVariant (bytes), Qt::EditRole);
953
1071
954
     //    int widht = m_pxPicture.width();
1072
     //    int widht = m_pxPicture.width();
955
     //    int heigh =  m_pxPicture.height();
1073
     //    int heigh =  m_pxPicture.height();
956
     //    tblView->setRowHeight(index.row(), heigh + 10);
1074
     //    tblView->setRowHeight(index.row(), heigh + 10);
957
         // model->submitAll();
1075
         // model->submitAll();
958
1076
959
1077
960
1078
961
1079
962
      // model->setData(index, value);
1080
      // model->setData(index, value);
963
   }
1081
   }
964
1082
965
1083
966
1084
967
   void IconDelegate::updateEditorGeometry(
1085
   void IconDelegate::updateEditorGeometry(
968
               QWidget *editor,
1086
               QWidget *editor,
969
               const QStyleOptionViewItem &option,
1087
               const QStyleOptionViewItem &option,
970
               const QModelIndex& /* index */) const {
1088
               const QModelIndex& /* index */) const {
971
1089
972
1090
973
   //    QRect r(option.rect.x() + option.rect.width()/2 - 7, option.rect.y() + option.rect.height()/2 - 7, 150, 100);
1091
   //    QRect r(option.rect.x() + option.rect.width()/2 - 7, option.rect.y() + option.rect.height()/2 - 7, 150, 100);
974
     //      editor->setGeometry(r);
1092
     //      editor->setGeometry(r);
975
1093
976
        editor->setGeometry(option.rect);
1094
        editor->setGeometry(option.rect);
977
   }
1095
   }
978
1096
979
1097
980
1098
981
1099
982
   void IconDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
1100
   void IconDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
983
   {
1101
   {
984
1102
985
1103
986
          m_pxPicture.fill( QColor(Qt::white) );
1104
          m_pxPicture.fill( QColor(Qt::white) );
987
1105
988
          const QAbstractItemModel * model = index.model();
1106
          const QAbstractItemModel * model = index.model();
989
          QString sFileName = model->data( index, Qt::DisplayRole ).toString();
1107
          QString sFileName = model->data( index, Qt::DisplayRole ).toString();
990
1108
991
          QVariant currentImage = model->data(index,0);
1109
          QVariant currentImage = model->data(index,0);
992
1110
993
1111
994
           QByteArray bytes = currentImage.toByteArray();
1112
           QByteArray bytes = currentImage.toByteArray();
995
     //       QImage image;
1113
     //       QImage image;
996
     //       image.loadFromData(bytes);
1114
     //       image.loadFromData(bytes);
997
1115
998
1116
999
           if (currentImage.isValid()) {
1117
           if (currentImage.isValid()) {
1000
                m_pxPicture.loadFromData(bytes);
1118
                m_pxPicture.loadFromData(bytes);
1001
1119
1002
           }
1120
           }
1003
           else {
1121
           else {
1004
               //QItemDelegate::paint(painter, option, index);
1122
               //QItemDelegate::paint(painter, option, index);
1005
           return;
1123
           return;
1006
           }
1124
           }
1007
1125
1008
1126
1009
1127
1010
1128
1011
1129
1012
           /*
1130
           /*
1013

1131

1014
           if ( !sFileName.isEmpty() )
1132
           if ( !sFileName.isEmpty() )
1015
                   m_pxPicture.load( sFileName );
1133
                   m_pxPicture.load( sFileName );
1016
           else {
1134
           else {
1017
               //QItemDelegate::paint(painter, option, index);
1135
               //QItemDelegate::paint(painter, option, index);
1018
           return;
1136
           return;
1019
           }
1137
           }
1020
*/
1138
*/
1021
1139
1022
1140
1023
1141
1024
1142
1025
1143
1026
           QPalette::ColorGroup cg = (option.state & QStyle::State_Enabled) ?
1144
           QPalette::ColorGroup cg = (option.state & QStyle::State_Enabled) ?
1027
                                                             ((option.state & QStyle::State_Active) ? QPalette::Normal : QPalette::Inactive ) :
1145
                                                             ((option.state & QStyle::State_Active) ? QPalette::Normal : QPalette::Inactive ) :
1028
                                                             QPalette::Disabled;
1146
                                                             QPalette::Disabled;
1029
1147
1030
            if (option.state & QStyle::State_Selected)
1148
            if (option.state & QStyle::State_Selected)
1031
1149
1032
1150
1033
                painter->fillRect(option.rect, option.palette.color(cg, QPalette::Highlight));
1151
                painter->fillRect(option.rect, option.palette.color(cg, QPalette::Highlight));
1034
1152
1035
1153
1036
1154
1037
           int nX = option.rect.x() + ( ( option.rect.width() - m_pxPicture.rect().width() ) / 2 );
1155
           int nX = option.rect.x() + ( ( option.rect.width() - m_pxPicture.rect().width() ) / 2 );
1038
           int nY = option.rect.y() + ( ( option.rect.height() - m_pxPicture.rect().height() ) / 2 );
1156
           int nY = option.rect.y() + ( ( option.rect.height() - m_pxPicture.rect().height() ) / 2 );
1039
   //        painter->setRenderHint(QPainter::Antialiasing);
1157
   //        painter->setRenderHint(QPainter::Antialiasing);
1040
           painter->drawPixmap( nX, nY, m_pxPicture );
1158
           painter->drawPixmap( nX, nY, m_pxPicture );
1041
1159
1042
       //    drawFocus(painter, option, option.rect.adjusted(0, 0, -1, -1)); // since we draw the grid ourselves
1160
       //    drawFocus(painter, option, option.rect.adjusted(0, 0, -1, -1)); // since we draw the grid ourselves
1043
1161
1044
           /*
1162
           /*
1045
           QPen pen = painter->pen();
1163
           QPen pen = painter->pen();
1046
           painter->setPen(option.palette.color(QPalette::Mid));
1164
           painter->setPen(option.palette.color(QPalette::Mid));
1047
           painter->drawLine(option.rect.bottomLeft(), option.rect.bottomRight());
1165
           painter->drawLine(option.rect.bottomLeft(), option.rect.bottomRight());
1048
           painter->drawLine(option.rect.topRight(), option.rect.bottomRight());
1166
           painter->drawLine(option.rect.topRight(), option.rect.bottomRight());
1049
           painter->setPen(pen);
1167
           painter->setPen(pen);
1050
   */
1168
   */
1051
}
1169
}
1052
1170
1053
1171
1054
   void IconDelegate::setTableView(QTableView* table){
1172
   void IconDelegate::setTableView(QTableView* table){
1055
       tblView = table;
1173
       tblView = table;
1056
   }
1174
   }
1057
1175
1058
1176
1059
1177
1060
1178
1061
1179
1062
1180
1063
1181
1064
1182
1065
   FileDelegate::FileDelegate( QObject * parent ) : QItemDelegate(parent)
1183
   FileDelegate::FileDelegate( QObject * parent ) : QItemDelegate(parent)
1066
   {
1184
   {
1067
   }
1185
   }
1068
1186
1069
1187
1070
1188
1071
1189
1072
1190
1073
   QWidget *FileDelegate::createEditor(QWidget *parent,
1191
   QWidget *FileDelegate::createEditor(QWidget *parent,
1074
       const QStyleOptionViewItem &/* option */,
1192
       const QStyleOptionViewItem &/* option */,
1075
       const QModelIndex & /* index */) const
1193
       const QModelIndex & /* index */) const
1076
   {
1194
   {
1077
1195
1078
       FileForm *editor = new FileForm(parent);
1196
       FileForm *editor = new FileForm(parent);
1079
1197
1080
       return editor;
1198
       return editor;
1081
1199
1082
   }
1200
   }
1083
1201
1084
1202
1085
1203
1086
1204
1087
   void FileDelegate::setEditorData(QWidget *editor,
1205
   void FileDelegate::setEditorData(QWidget *editor,
1088
                                       const QModelIndex &index) const
1206
                                       const QModelIndex &index) const
1089
   {
1207
   {
1090
1208
1091
1209
1092
       const QAbstractItemModel * model = index.model();
1210
       const QAbstractItemModel * model = index.model();
1093
       FileForm *flFrm = static_cast<FileForm*>(editor);
1211
       FileForm *flFrm = static_cast<FileForm*>(editor);
1094
       QVariant currentData = model->data(index,Qt::EditRole);
1212
       QVariant currentData = model->data(index,Qt::EditRole);
1095
1213
1096
      // QVariant currentData = QSqlTableModel::data(index, 0);
1214
      // QVariant currentData = QSqlTableModel::data(index, 0);
1097
       QByteArray bytes = currentData.toByteArray();
1215
       QByteArray bytes = currentData.toByteArray();
1098
       if (currentData.isValid()) flFrm->setData(bytes);
1216
       if (currentData.isValid()) flFrm->setData(bytes);
1099
       else return;
1217
       else return;
1100
1218
1101
   }
1219
   }
1102
1220
1103
1221
1104
1222
1105
1223
1106
void FileDelegate::setModelData(
1224
void FileDelegate::setModelData(
1107
               QWidget *editor,
1225
               QWidget *editor,
1108
               QAbstractItemModel *model,
1226
               QAbstractItemModel *model,
1109
               const QModelIndex& index) const {
1227
               const QModelIndex& index) const {
1110
       FileForm *flFrm = static_cast<FileForm*>(editor);
1228
       FileForm *flFrm = static_cast<FileForm*>(editor);
1111
       if (!(flFrm->dataIsChanged())) return;
1229
       if (!(flFrm->dataIsChanged())) return;
1112
1230
1113
       m_Data = flFrm->data();
1231
       m_Data = flFrm->data();
1114
       if (!m_Data.isEmpty()) { // åñëè ìàññèâ íå ïóñòîé
1232
       if (!m_Data.isEmpty()) { // åñëè ìàññèâ íå ïóñòîé
1115
                                   model->setData(index, QVariant (m_Data), Qt::EditRole);
1233
                                   model->setData(index, QVariant (m_Data), Qt::EditRole);
1116
1234
1117
                              }
1235
                              }
1118
       else {       // åñëè ìàññèâ ïóñòîé (ôàéë óäàëèëè)
1236
       else {       // åñëè ìàññèâ ïóñòîé (ôàéë óäàëèëè)
1119
           QVariant val_null;
1237
           QVariant val_null;
1120
           model->setData(index, val_null, Qt::EditRole);
1238
           model->setData(index, val_null, Qt::EditRole);
1121
1239
1122
            }
1240
            }
1123
1241
1124
1242
1125
1243
1126
   }
1244
   }
1127
1245
1128
1246
1129
1247
1130
   void FileDelegate::updateEditorGeometry(
1248
   void FileDelegate::updateEditorGeometry(
1131
               QWidget *editor,
1249
               QWidget *editor,
1132
               const QStyleOptionViewItem &option,
1250
               const QStyleOptionViewItem &option,
1133
               const QModelIndex& /* index */) const {
1251
               const QModelIndex& /* index */) const {
1134
1252
1135
1253
1136
   //    QRect r(option.rect.x() + option.rect.width()/2 - 7, option.rect.y() + option.rect.height()/2 - 7, 150, 100);
1254
   //    QRect r(option.rect.x() + option.rect.width()/2 - 7, option.rect.y() + option.rect.height()/2 - 7, 150, 100);
1137
     //      editor->setGeometry(r);
1255
     //      editor->setGeometry(r);
1138
1256
1139
        editor->setGeometry(option.rect);
1257
        editor->setGeometry(option.rect);
1140
   }
1258
   }
1141
1259
1142
1260
1143
1261
1144
1262
1145
 
1263