Хранилища Subversion OpenInventory

Редакция

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

Редакция 129 Редакция 158
1
#include "mymodel.h"
1
#include "mymodel.h"
2
2
3
MyModel::MyModel(QObject *parent) :
3
MyModel::MyModel(QObject *parent) :
4
      QSqlTableModel(parent)
4
      QSqlTableModel(parent)
5
{
5
{
6
    setEditStrategy(QSqlTableModel::OnManualSubmit);
6
    setEditStrategy(QSqlTableModel::OnManualSubmit);
7
}
7
}
8
8
9
Qt::ItemFlags MyModel::flags(
9
Qt::ItemFlags MyModel::flags(
10
         const QModelIndex &index) const {
10
         const QModelIndex &index) const {
11
Qt::ItemFlags flags = QSqlTableModel::flags(index);
11
Qt::ItemFlags flags = QSqlTableModel::flags(index);
12
12
13
/***********************************************
13
/***********************************************
14

14

15
if ((index.column() != 3) && (index.column() != 0))
15
if ((index.column() != 3) && (index.column() != 0))
16
     flags |= Qt::ItemIsEditable;
16
     flags |= Qt::ItemIsEditable;
17
//if (index.column() == 4)
17
//if (index.column() == 4)
18
//     flags |= Qt::ItemIsUserCheckable;
18
//     flags |= Qt::ItemIsUserCheckable;
19
else
19
else
20
{
20
{
21
    if ((index.column() == 3) || (index.column() == 0)) flags &= ~Qt::ItemIsEditable; // çàïðåùàåì ðåäàêòèðîâàíèå òðåòüåãî ñòîëáöà
21
    if ((index.column() == 3) || (index.column() == 0)) flags &= ~Qt::ItemIsEditable; // çàïðåùàåì ðåäàêòèðîâàíèå òðåòüåãî ñòîëáöà
22
}
22
}
23

23

24
*************************************************/
24
*************************************************/
25
25
-
 
26
 if (bolleans_list.indexOf(index.column()) != -1)
-
 
27
{
-
 
28
     flags |= Qt::ItemIsUserCheckable;         // åñëè â ñòîëáöå òèï "BOOL", äåëàåì åãî âèáèðàåìûì
-
 
29
     flags &= ~Qt::ItemIsEditable;
-
 
30
 }
-
 
31
-
 
32
 return flags; // òåêóùèé ñòîëáåö
26
33
27
34
28
return flags;
-
 
29
}
35
}
30
36
31
37
32
bool MyModel::setData(const QModelIndex &index, const QVariant &value, int role) {
38
bool MyModel::setData(const QModelIndex &index, const QVariant &value, int role) {
33
  ////  if (index.column()==3) return false; // â òðåòüåé êîëîíêå íå äàåì ïîìåíÿòü çíà÷åíèå
39
  ////  if (index.column()==3) return false; // â òðåòüåé êîëîíêå íå äàåì ïîìåíÿòü çíà÷åíèå
34
    bool lResult = false;
40
    bool lResult = false;
35
41
36
    /*
42
    /*
37
    QString str_tmp;
43
    QString str_tmp;
38
    if (index.column()==1) {                // åñëè ìåíÿåì èìÿ êëàññà
44
    if (index.column()==1) {                // åñëè ìåíÿåì èìÿ êëàññà
39
        str_tmp = value.toString();         // òî ïîìåíÿåì è èìÿ òàáëèöû
45
        str_tmp = value.toString();         // òî ïîìåíÿåì è èìÿ òàáëèöû
40
        str_tmp.append(tr(" instance"));
46
        str_tmp.append(tr(" instance"));
41
      }
47
      }
42
      */
48
      */
43
/*
49
/*
44
    QString str_tmp;
50
    QString str_tmp;
45
    if (index.column()==0) {                // åñëè ìåíÿåì èìÿ êëàññà
51
    if (index.column()==0) {                // åñëè ìåíÿåì èìÿ êëàññà
46
        str_tmp = value.toString();         // òî ïîìåíÿåì è èìÿ òàáëèöû
52
        str_tmp = value.toString();         // òî ïîìåíÿåì è èìÿ òàáëèöû
47
        str_tmp.append(tr("_instance"));
53
        str_tmp.append(tr("_instance"));
48
      }
54
      }
49
*/
55
*/
50
    lResult = QSqlTableModel::setData(index, value, role);
-
 
51
56
52
57
-
 
58
    // MyModel::record(index.row());
53
59
54
 /*****************************************************8
-
 
55

60
56
    if (lResult) {
-
 
57
        QModelIndex newindex;
-
 
58
        QSqlRecord rec = record(index.row());
-
 
59

61
-
 
62
    if (bolleans_list.indexOf(index.column()) != -1) {
-
 
63
      //  QModelIndex newindex;
-
 
64
   //    QSqlRecord rec = record(index.row());
-
 
65
    //   bool chk = (value.toInt()==Qt::Checked);
-
 
66
    //               rec.setValue(index.column(),chk);
60
        rec.setValue(index.column(), value);
67
//        rec.setValue(index.column(), value);
61
        rec.setGenerated(index.column(), true);
68
 //       rec.setGenerated(index.column(), true);
62

69
-
 
70
//lResult = QSqlTableModel::setData(index, value, role);
63

71
-
 
72
  //      lResult = updateRowInTable(index.row(), rec);
-
 
73
   //    lResult = setRecord(index.row(),rec);  // âåðíåì ðåçóëüòàò îá óñòàíîâêå
64

74
-
 
75
        /*
65
        lResult = updateRowInTable(index.row(), rec);
76
        QStandardItem* item = static_cast<QStandardItem*>(index.internalPointer());
66
  ///      QSqlTableModel::setData(newindex, QVariant(str_tmp), Qt::EditRole);
77
                  Qt::CheckState state = (value.toInt() == 2) ? Qt::Checked : Qt::Unchecked;
-
 
78
                  item->setCheckState(state);
67

79

-
 
80
*/
68

81
69
    }
-
 
70
**********************************************/
-
 
71
82
-
 
83
        lResult = QSqlTableModel::setData(index, value, Qt::EditRole);
-
 
84
//        emit MyModel::dataChanged(index, index);
72
85
-
 
86
       //     MyModel::reset();
-
 
87
     //  lResult = QSqlTableModel::setData(index, value, Qt::DisplayRole);
-
 
88
       //  QSqlTableModel::setData(index, value, Qt::CheckStateRole);
-
 
89
       MyModel::submitAll();
-
 
90
  ////// //     MyModel::select();
-
 
91
       // MyModel::data(index, Qt::DisplayRole);
-
 
92
          }
-
 
93
-
 
94
else
-
 
95
    {
-
 
96
       lResult = QSqlTableModel::setData(index, value, role);
-
 
97
    }
73
98
74
99
75
    return lResult;
100
  return lResult;
76
101
77
102
78
103
79
104
80
105
81
}
106
}
82
107
83
108
84
109
85
QVariant MyModel::data(const QModelIndex &index, int role) const {
110
QVariant MyModel::data(const QModelIndex &index, int role) const {
86
111
-
 
112
     QHash<int, bool> check;
87
     QVariant value = QSqlTableModel::data(index, role);
113
     QVariant value = QSqlTableModel::data(index, role);
88
     QList <int> keys;
114
     QList <int> keys;
89
     QStringList values;
115
     QStringList values;
90
     keys = pointers_map.keys(); // ñïèñîê ñòîëáöîâ ñ óêàçàòåëÿìè
116
     keys = pointers_map.keys(); // ñïèñîê ñòîëáöîâ ñ óêàçàòåëÿìè
91
     values = pointers_map.values(); // ñïèñîê òàáëèö-õðàíèëèù îáúåêòîâ ðîäèòåëüñêèõ êëàññîâ
117
     values = pointers_map.values(); // ñïèñîê òàáëèö-õðàíèëèù îáúåêòîâ ðîäèòåëüñêèõ êëàññîâ
92
118
93
switch (role) {
119
switch (role) {
94
        case Qt::DisplayRole:
120
        case Qt::DisplayRole:
95
            {
121
            {
-
 
122
                //if (check.contains(index.column()) &&  check.value(index.column()))
-
 
123
                //    return value.toInt() != 0 ? tr("Yes") : tr("No");
-
 
124
                if (bolleans_list.indexOf(index.column()) != -1)
-
 
125
                    {
-
 
126
                        return value.toInt() != 0 ? tr("Äà") : tr("Íåò"); // äëÿ êîëîíîê ñ òèïîì "BOOL"
-
 
127
                    }
96
               int index_of_list;
128
                int index_of_list;
97
               index_of_list = keys.indexOf(index.column());
129
               index_of_list = keys.indexOf(index.column());
98
130
99
               if (index_of_list == -1) return value;
131
               if (index_of_list == -1) return value;
100
               else {
132
               else {
101
                   QString parentInctance;
133
                   QString parentInctance;
102
                   QSqlQuery q;
134
                   QSqlQuery q;
103
                   QString sql_str;
135
                   QString sql_str;
104
                   bool ok;
136
                   bool ok;
105
                   parentInctance = values.at(index_of_list);
137
                   parentInctance = values.at(index_of_list);
106
                   sql_str = tr("select * from `");
138
                   sql_str = tr("select * from `");
107
                   sql_str.append(parentInctance);
139
                   sql_str.append(parentInctance);
108
                   sql_str.append(tr("` "));
140
                   sql_str.append(tr("` "));
109
                   sql_str.append(tr("where `ID` = "));
141
                   sql_str.append(tr("where `ID` = "));
110
                   sql_str.append(value.toString());
142
                   sql_str.append(value.toString());
111
                   q.prepare(sql_str);
143
                   q.prepare(sql_str);
112
                   ok = q.exec();
144
                   ok = q.exec();
113
145
114
                   if (ok)  {
146
                   if (ok)  {
115
                                while(q.next()){
147
                                while(q.next()){
116
                                  QString object_name = q.value(1).toString();
148
                                  QString object_name = q.value(1).toString();
117
                                  if (!object_name.isEmpty()) return object_name;
149
                                  if (!object_name.isEmpty()) return object_name;
118
150
119
                                                  }
151
                                                  }
120
                            }
152
                            }
121
                   int ii;
153
                   int ii;
122
                   ii++;
154
                   ii++;
123
155
124
156
125
               }
157
               }
126
               return value;
158
               return value;
127
159
128
        }
160
        }
129
         //   if (index.column() == 1)
161
         //   if (index.column() == 1)
130
          //     return value.toString().prepend(tr("¹ "));
162
          //     return value.toString().prepend(tr("¹ "));
131
163
132
164
133
        case Qt::EditRole:  return value;
165
        case Qt::EditRole:
-
 
166
            if (bolleans_list.indexOf(index.column()) == -1)             return value; // òåêóùèé ñòîëáåö
-
 
167
-
 
168
            else {
-
 
169
               return value.toInt() != 0 ? tr("Äà") : tr("Íåò");
-
 
170
-
 
171
            }
-
 
172
            ///return value;
134
           // if (index.column() == 1)
173
           // if (index.column() == 1)
135
           //    return value.toString().prepend(tr("¹ "));
174
           //    return value.toString().prepend(tr("¹ "));
136
175
-
 
176
-
 
177
-
 
178
137
        case Qt::TextColorRole:
179
        case Qt::TextColorRole:
138
            if(index.column() == 1)
180
            if(index.column() == 1)
139
                return qVariantFromValue(QColor(Qt::blue));
181
                return qVariantFromValue(QColor(Qt::blue));
140
            else
182
            else
141
              return value;
183
              return value;
142
        case Qt::TextAlignmentRole: return value;
184
        case Qt::TextAlignmentRole: return value;
143
        case Qt::FontRole:
185
        case Qt::FontRole:
144
           if(index.column() == 1) {
186
           if(index.column() == 1) {
145
               QFont font = QFont("Helvetica", 16, QFont::Bold);
187
               QFont font = QFont("Helvetica", 16, QFont::Bold);
146
              return qVariantFromValue(font);
188
              return qVariantFromValue(font);
147
           }else
189
           }else
148
               return value;
190
               return value;
149
191
150
       case Qt::BackgroundColorRole: {
192
       case Qt::BackgroundColorRole: {
151
                int a = (index.row() % 2) ? 14 : 0;
193
                int a = (index.row() % 2) ? 14 : 0;
152
                if(index.column() == 2)
194
                if(index.column() == 2)
153
                           return qVariantFromValue(QColor(220,240-a,230-a));
195
                           return qVariantFromValue(QColor(220,240-a,230-a));
154
                        else if(index.column() == 4)
196
                        else if(index.column() == 4)
155
                            return qVariantFromValue(QColor(200,220-a,255-a));
197
                            return qVariantFromValue(QColor(200,220-a,255-a));
156
                        else
198
                        else
157
                           return value;
199
                           return value;
158
                                    }
200
                                    }
159
201
160
202
161
203
162
     case Qt::CheckStateRole: return value;
204
     case Qt::CheckStateRole:
-
 
205
         {
-
 
206
-
 
207
           if (bolleans_list.indexOf(index.column()) == -1)             return value; // òåêóùèé ñòîëáåö
-
 
208
-
 
209
           else
-
 
210
           {
-
 
211
               return (QSqlQueryModel::data(index).toInt() != 0) ? Qt::Checked : Qt::Unchecked;
-
 
212
           }
-
 
213
       }
163
214
164
     case Qt::SizeHintRole:return value;
215
     case Qt::SizeHintRole:return value;
165
216
166
       }
217
       }
167
  return value;
218
  return value;
168
}
219
}
169
220
170
221
171
 
222