Хранилища Subversion OpenInventory

Редакция

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

Редакция 94 Редакция 95
1
#include "mainwindow.h"
1
#include "mainwindow.h"
2
#include "ui_mainwindow.h"
2
#include "ui_mainwindow.h"
3
3
4
MainWindow::MainWindow(QWidget *parent) :
4
MainWindow::MainWindow(QWidget *parent) :
5
    QMainWindow(parent),
5
    QMainWindow(parent),
6
    ui(new Ui::MainWindow)
6
    ui(new Ui::MainWindow)
7
{
7
{
8
    ui->setupUi(this);
8
    ui->setupUi(this);
9
9
10
   MainWindow::readModel();
10
   MainWindow::readModel();
11
11
12
   //QString model_str;
12
   //QString model_str;
13
   MainWindow::creatModelString();
13
   MainWindow::creatModelString();
14
   int i;
14
   int i;
15
   i++;
15
   i++;
16
    QFile file_tmp("./temp.txt");
16
    QFile file_tmp("./temp.txt");
17
    bool ok;
17
    bool ok;
18
    ok = file_tmp.open(QIODevice::ReadWrite | QIODevice::Text);
18
    ok = file_tmp.open(QIODevice::ReadWrite | QIODevice::Text);
19
    QTextStream out(&file_tmp);
19
    QTextStream out(&file_tmp);
20
    out << MainWindow::modelString;
20
    out << MainWindow::modelString;
21
    file_tmp.close();
21
    file_tmp.close();
22
22
23
    MainWindow::openDataBase();
23
    MainWindow::openDataBase();
-
 
24
    MainWindow::buildPreviewModel(tr("3"));
24
25
25
}
26
}
26
27
27
MainWindow::~MainWindow()
28
MainWindow::~MainWindow()
28
{
29
{
29
    delete ui;
30
    delete ui;
30
}
31
}
31
32
32
void MainWindow::changeEvent(QEvent *e)
33
void MainWindow::changeEvent(QEvent *e)
33
{
34
{
34
    QMainWindow::changeEvent(e);
35
    QMainWindow::changeEvent(e);
35
    switch (e->type()) {
36
    switch (e->type()) {
36
    case QEvent::LanguageChange:
37
    case QEvent::LanguageChange:
37
        ui->retranslateUi(this);
38
        ui->retranslateUi(this);
38
        break;
39
        break;
39
    default:
40
    default:
40
        break;
41
        break;
41
    }
42
    }
42
}
43
}
43
44
44
45
45
bool MainWindow::readModel(){
46
bool MainWindow::readModel(){
46
    bool result;
47
    bool result;
47
    QString model_str;
48
    QString model_str;
48
    QFile file(":/model.txt");
49
    QFile file(":/model.txt");
49
50
50
   rootItem1 = new  QTreeWidgetItem(ui->treeWidget);
51
   rootItem1 = new  QTreeWidgetItem(ui->treeWidget);
51
    rootItem1->setText(0, tr("Óðîâåíü 1"));
52
    rootItem1->setText(0, tr("Óðîâåíü 1"));
52
   // rootItem2 = new  QTreeWidgetItem(rootItem1);
53
   // rootItem2 = new  QTreeWidgetItem(rootItem1);
53
   // rootItem2->setText(0, tr("óðîâåíü 2"));
54
   // rootItem2->setText(0, tr("óðîâåíü 2"));
54
    rootItem1->setCheckState(0,Qt::Checked);
55
    rootItem1->setCheckState(0,Qt::Checked);
55
   // rootItem2->setCheckState(0,Qt::Checked);
56
   // rootItem2->setCheckState(0,Qt::Checked);
56
57
57
58
58
59
59
    result = file.open(QIODevice::ReadOnly);
60
    result = file.open(QIODevice::ReadOnly);
60
    if (result) {
61
    if (result) {
61
                     model_str = QString(tr(file.readAll()));
62
                     model_str = QString(tr(file.readAll()));
62
                }
63
                }
63
64
64
    setupModelData(model_str.split(QString("\n")), rootItem1);
65
    setupModelData(model_str.split(QString("\n")), rootItem1);
65
66
66
67
67
    return result;
68
    return result;
68
69
69
}
70
}
70
71
71
72
72
void MainWindow::setupModelData(const QStringList &lines, QTreeWidgetItem *parent)
73
void MainWindow::setupModelData(const QStringList &lines, QTreeWidgetItem *parent)
73
{
74
{
74
    QList<QTreeWidgetItem*> parents;
75
    QList<QTreeWidgetItem*> parents;
75
    QList<int> indentations;
76
    QList<int> indentations;
76
    parents << parent;
77
    parents << parent;
77
    indentations << 0;
78
    indentations << 0;
78
79
79
    int number = 0;
80
    int number = 0;
80
81
81
    while (number < lines.count()) {
82
    while (number < lines.count()) {
82
        int position = 0;
83
        int position = 0;
83
        while (position < lines[number].length()) {
84
        while (position < lines[number].length()) {
84
            if (lines[number].mid(position, 1) != " ")
85
            if (lines[number].mid(position, 1) != " ")
85
                break;
86
                break;
86
            position++;
87
            position++;
87
        }
88
        }
88
89
89
        QString lineData = lines[number].mid(position).trimmed();
90
        QString lineData = lines[number].mid(position).trimmed();
90
91
91
        if (!lineData.isEmpty()) {
92
        if (!lineData.isEmpty()) {
92
            // Read the column data from the rest of the line.
93
            // Read the column data from the rest of the line.
93
            QStringList columnStrings = lineData.split("\t", QString::SkipEmptyParts);
94
            QStringList columnStrings = lineData.split("\t", QString::SkipEmptyParts);
94
            QList<QVariant> columnData;
95
            QList<QVariant> columnData;
95
            for (int column = 0; column < columnStrings.count(); ++column)
96
            for (int column = 0; column < columnStrings.count(); ++column)
96
                columnData << columnStrings[column];
97
                columnData << columnStrings[column];
97
98
98
            if (position > indentations.last()) {
99
            if (position > indentations.last()) {
99
                // The last child of the current parent is now the new parent
100
                // The last child of the current parent is now the new parent
100
                // unless the current parent has no children.
101
                // unless the current parent has no children.
101
102
102
                if (parents.last()->childCount() > 0) {
103
                if (parents.last()->childCount() > 0) {
103
                    parents << parents.last()->child(parents.last()->childCount()-1);
104
                    parents << parents.last()->child(parents.last()->childCount()-1);
104
                    indentations << position;
105
                    indentations << position;
105
                }
106
                }
106
            } else {
107
            } else {
107
                while (position < indentations.last() && parents.count() > 0) {
108
                while (position < indentations.last() && parents.count() > 0) {
108
                    parents.pop_back();
109
                    parents.pop_back();
109
                    indentations.pop_back();
110
                    indentations.pop_back();
110
                }
111
                }
111
            }
112
            }
112
113
113
            // Append a new item to the current parent's list of children.
114
            // Append a new item to the current parent's list of children.
114
          // // //  parents.last()->appendChild(new QTreeWidgetItem(columnData, parents.last()));
115
          // // //  parents.last()->appendChild(new QTreeWidgetItem(columnData, parents.last()));
115
            QTreeWidgetItem* itm_tmp;
116
            QTreeWidgetItem* itm_tmp;
116
            itm_tmp = new QTreeWidgetItem( parents.last());
117
            itm_tmp = new QTreeWidgetItem( parents.last());
117
118
118
            itm_tmp->setText(0, QString(columnData.at(0).toString()));
119
            itm_tmp->setText(0, QString(columnData.at(0).toString()));
119
            if (columnData.at(1).toString() == "true") {
120
            if (columnData.at(1).toString() == "true") {
120
                                                            itm_tmp->setCheckState(0,Qt::Checked);
121
                                                            itm_tmp->setCheckState(0,Qt::Checked);
121
                                                        }
122
                                                        }
122
            else itm_tmp->setCheckState(0,Qt::Unchecked);
123
            else itm_tmp->setCheckState(0,Qt::Unchecked);
123
            itm_tmp->setText(1, QString(columnData.at(2).toString()));
124
            itm_tmp->setText(1, QString(columnData.at(2).toString()));
124
            itm_tmp->setText(2, QVariant(number).toString()); // íîìåð ñòðîêè â ôàéëå-ìîäåëè îòîáðàæåíèÿ
125
            itm_tmp->setText(2, QVariant(number).toString()); // íîìåð ñòðîêè â ôàéëå-ìîäåëè îòîáðàæåíèÿ
125
            itm_tmp->setText(3, QVariant(indentations.size()).toString());
126
            itm_tmp->setText(3, QVariant(indentations.size()).toString());
126
        }
127
        }
127
128
128
        number++;
129
        number++;
129
    }
130
    }
130
}
131
}
131
132
132
133
133
/*
134
/*
134
void MainWindow::openBase()
135
void MainWindow::openBase()
135
{
136
{
136

137

137
        db = QSqlDatabase::addDatabase("QMYSQL");
138
        db = QSqlDatabase::addDatabase("QMYSQL");
138
        pdb = &db;
139
        pdb = &db;
139
        raportFrm.pdb = &db;
140
        raportFrm.pdb = &db;
140

141

141
        pdb->setHostName(hostName);
142
        pdb->setHostName(hostName);
142
        pdb->setDatabaseName(baseName);
143
        pdb->setDatabaseName(baseName);
143
        pdb->setUserName(userName);
144
        pdb->setUserName(userName);
144
        pdb->setPassword(password);
145
        pdb->setPassword(password);
145
        bool ok = pdb->open();
146
        bool ok = pdb->open();
146
        if (!ok) {
147
        if (!ok) {
147
                                QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
148
                                QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
148
                                                                                this,                      // Ðîäèòåëüñêèé âèäæåò.
149
                                                                                this,                      // Ðîäèòåëüñêèé âèäæåò.
149
                                                                                QObject::tr("Database Error"),   // Çàãîëîâîê.
150
                                                                                QObject::tr("Database Error"),   // Çàãîëîâîê.
150
                                                                                pdb->lastError().text());          // Òåêñò ñîîáùåíèÿ.
151
                                                                                pdb->lastError().text());          // Òåêñò ñîîáùåíèÿ.
151
                         }
152
                         }
152
        if (ok)
153
        if (ok)
153
        {lineEdit-> insert(tr("Áàçà óñïåøíî îòêðûòà"));
154
        {lineEdit-> insert(tr("Áàçà óñïåøíî îòêðûòà"));
154
        }
155
        }
155
        else {lineEdit-> insert(tr("Áàçà íåäîñòóïíà. Êîä îøèáêè: "));
156
        else {lineEdit-> insert(tr("Áàçà íåäîñòóïíà. Êîä îøèáêè: "));
156
                  lineEdit-> insert(pdb->lastError().text());
157
                  lineEdit-> insert(pdb->lastError().text());
157
                 }
158
                 }
158

159

159

160

160

161

161
        model = new QSqlTableModel(this);
162
        model = new QSqlTableModel(this);
162
        model->setTable(tableName);
163
        model->setTable(tableName);
163

164

164
        model->setEditStrategy(QSqlTableModel::OnManualSubmit);
165
        model->setEditStrategy(QSqlTableModel::OnManualSubmit);
165
        model->setSort(0, Qt::AscendingOrder);
166
        model->setSort(0, Qt::AscendingOrder);
166

167

167
        model->select();
168
        model->select();
168

169

169

170

170
        QSqlField field(tr("age"), QVariant::Int);
171
        QSqlField field(tr("age"), QVariant::Int);
171
        field.setValue(QString(tr("123")));
172
        field.setValue(QString(tr("123")));
172

173

173
        bool okey;
174
        bool okey;
174
        int index;
175
        int index;
175
        QSqlRecord record;
176
        QSqlRecord record;
176

177

177

178

178
        tableView->setModel(model);
179
        tableView->setModel(model);
179
        view.setModel(model);
180
        view.setModel(model);
180

181

181

182

182
        tableView->setAlternatingRowColors(true);
183
        tableView->setAlternatingRowColors(true);
183
        view.setAlternatingRowColors(true);
184
        view.setAlternatingRowColors(true);
184

185

185
        tableView->resizeColumnsToContents();
186
        tableView->resizeColumnsToContents();
186

187

187

188

188
        view.resizeColumnsToContents();
189
        view.resizeColumnsToContents();
189

190

190
        tableView->show();
191
        tableView->show();
191

192

192

193

193

194

194
        initTreeWidget();
195
        initTreeWidget();
195
}
196
}
196
*/
197
*/
197
198
198
199
199
void MainWindow::creatModelString(){
200
void MainWindow::creatModelString(){
200
201
201
    MainWindow::modelString.clear(); // î÷èùàåì ñòðîêó ìîäåëè
202
    MainWindow::modelString.clear(); // î÷èùàåì ñòðîêó ìîäåëè
202
 //   for (int i =0; i < rootItem1->childCount(); ++i )
203
 //   for (int i =0; i < rootItem1->childCount(); ++i )
203
204
204
    {MainWindow::addChildsString(rootItem1, 0);}
205
    {MainWindow::addChildsString(rootItem1, 0);}
205
206
206
    int root_item_child_count;
207
    int root_item_child_count;
207
    int i;
208
    int i;
208
    root_item_child_count = rootItem1->childCount();
209
    root_item_child_count = rootItem1->childCount();
209
    i++;
210
    i++;
210
211
211
}
212
}
212
213
213
214
214
void MainWindow::addChildsString(QTreeWidgetItem *parentItem, int level){
215
void MainWindow::addChildsString(QTreeWidgetItem *parentItem, int level){
215
    int child_count;
216
    int child_count;
216
    child_count = parentItem->childCount();
217
    child_count = parentItem->childCount();
217
    for (int i=0; i < child_count; ++i){
218
    for (int i=0; i < child_count; ++i){
218
        for (int m=0; m < level; ++m){
219
        for (int m=0; m < level; ++m){
219
        modelString.append(tr("    ")); // ÷åòûðå ïðîáåëà - ïðèçíàê òîãî, ÷òî ýòî íîâûé óðîâåíü âëîæåíèÿ
220
        modelString.append(tr("    ")); // ÷åòûðå ïðîáåëà - ïðèçíàê òîãî, ÷òî ýòî íîâûé óðîâåíü âëîæåíèÿ
220
    }
221
    }
221
        modelString.append(parentItem->child(i)->text(0)); // â ïåðâîé êîëîíêå - èìÿ êëàññà
222
        modelString.append(parentItem->child(i)->text(0)); // â ïåðâîé êîëîíêå - èìÿ êëàññà
222
        modelString.append(tr("\t\t\t\t")); // ÷åòûðå òàáóëÿöèè - ïðèçíàê íîâîãî ñòîëáöà
223
        modelString.append(tr("\t\t\t\t")); // ÷åòûðå òàáóëÿöèè - ïðèçíàê íîâîãî ñòîëáöà
223
        if (parentItem->child(i)->checkState(0) ==  Qt::Checked) {modelString.append(tr("true"));} // åñëè ãàëî÷êà ñòîèò, çàíîñèì "true", ýëåìåíòû êëàññà â ïðåäñòàâëåíèè îòîáðàæàòüñÿ áóäóò
224
        if (parentItem->child(i)->checkState(0) ==  Qt::Checked) {modelString.append(tr("true"));} // åñëè ãàëî÷êà ñòîèò, çàíîñèì "true", ýëåìåíòû êëàññà â ïðåäñòàâëåíèè îòîáðàæàòüñÿ áóäóò
224
            else {modelString.append(tr("false"));} // åñëè êëàññ íå âûáðàí - çàíîñèì "false", ýëåìåíòû êëàññà â ïðåäñòàâëåíèè îòîáðàæàòüñÿ íå áóäóò
225
            else {modelString.append(tr("false"));} // åñëè êëàññ íå âûáðàí - çàíîñèì "false", ýëåìåíòû êëàññà â ïðåäñòàâëåíèè îòîáðàæàòüñÿ íå áóäóò
225
        modelString.append(tr("\t\t\t\t")); // ÷åòûðå òàáóëÿöèè - ïðèçíàê íîâîãî ñòîëáöà
226
        modelString.append(tr("\t\t\t\t")); // ÷åòûðå òàáóëÿöèè - ïðèçíàê íîâîãî ñòîëáöà
226
        modelString.append(parentItem->child(i)->text(1)); // âî âòîðîé êîëîíêå - ID êëàññà
227
        modelString.append(parentItem->child(i)->text(1)); // âî âòîðîé êîëîíêå - ID êëàññà
227
         modelString.append(tr("\n")); // êîíåö ñòðîêè
228
         modelString.append(tr("\n")); // êîíåö ñòðîêè
228
        if (parentItem->child(i)->childCount() > 0) { MainWindow::addChildsString(parentItem->child(i), level+1);}
229
        if (parentItem->child(i)->childCount() > 0) { MainWindow::addChildsString(parentItem->child(i), level+1);}
229
230
230
    }
231
    }
231
int i;
232
int i;
232
i++;
233
i++;
233
}
234
}
234
235
235
236
236
bool MainWindow::openDataBase(){
237
bool MainWindow::openDataBase(){
237
    QString errorString;
238
    QString errorString;
238
    sql = QSqlDatabase::addDatabase("QMYSQL");
239
    sql = QSqlDatabase::addDatabase("QMYSQL");
239
    sql.setDatabaseName(tr("an_db"));
240
    sql.setDatabaseName(tr("an_db"));
240
    sql.setHostName(tr("localhost"));
241
    sql.setHostName(tr("localhost"));
241
    sql.setUserName(tr("an"));
242
    sql.setUserName(tr("an"));
242
    sql.setPassword(tr("393939"));
243
    sql.setPassword(tr("393939"));
243
244
244
    bool ok;
245
    bool ok;
245
    ok = sql.open();
246
    ok = sql.open();
246
247
247
    /*
248
    /*
248
    if (!ok) {
249
    if (!ok) {
249
                                QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
250
                                QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
250
                                                                                this,                      // Ðîäèòåëüñêèé âèäæåò.
251
                                                                                this,                      // Ðîäèòåëüñêèé âèäæåò.
251
                                                                                QObject::tr("Database Error"),   // Çàãîëîâîê.
252
                                                                                QObject::tr("Database Error"),   // Çàãîëîâîê.
252
                                                                                sql.lastError().text() );         // Òåêñò ñîîáùåíèÿ.
253
                                                                                sql.lastError().text() );         // Òåêñò ñîîáùåíèÿ.
253

254

254

255

255
                            }
256
                            }
256

257

257
*/
258
*/
258
    if (!ok) {
259
    if (!ok) {
259
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
260
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
260
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
261
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
261
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
262
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
262
                                                                            sql.lastError().text());          // Òåêñò ñîîáùåíèÿ.
263
                                                                            sql.lastError().text());          // Òåêñò ñîîáùåíèÿ.
263
                     }
264
                     }
264
else {
265
else {
265
266
266
        QMessageBox::information( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
267
        QMessageBox::information( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
267
                                                        this,                      // Ðîäèòåëüñêèé âèäæåò.
268
                                                        this,                      // Ðîäèòåëüñêèé âèäæåò.
268
                                                        QObject::tr("Database Connect"),   // Çàãîëîâîê.
269
                                                        QObject::tr("Database Connect"),   // Çàãîëîâîê.
269
                                                        QObject::tr("Ñîåäèíåíèå ñ áàçîé äàííûõ óñïåøíî óñòàíîâëåíî."));         // Òåêñò ñîîáùåíèÿ.
270
                                                        QObject::tr("Ñîåäèíåíèå ñ áàçîé äàííûõ óñïåøíî óñòàíîâëåíî."));         // Òåêñò ñîîáùåíèÿ.
270
271
271
272
272
273
273
274
274
275
275
    }
276
    }
276
277
277
     return ok;
278
     return ok;
278
}
279
}
279
280
280
281
281
bool MainWindow::buildPreviewModel(QString rootClassID){
282
bool MainWindow::buildPreviewModel(QString rootClassID){
282
QSqlQuery q;
283
QSqlQuery q;
283
QString sql_str;
284
QString sql_str;
-
 
285
QString field_name_str;
-
 
286
QString root_class_name;
-
 
287
bool ok;
284
int field_name;
288
int field_name;
-
 
289
-
 
290
//ui->treeWidget->clear();
-
 
291
-
 
292
root_class_name = MainWindow::ClassName(rootClassID); // îïðåäåëÿåì èìÿ êëàññà
-
 
293
-
 
294
rootItem1 = new  QTreeWidgetItem(ui->treeWidget);
-
 
295
 rootItem1->setText(0, root_class_name);
-
 
296
// rootItem2 = new  QTreeWidgetItem(rootItem1);
-
 
297
// rootItem2->setText(0, tr("óðîâåíü 2"));
-
 
298
 rootItem1->setCheckState(0,Qt::Checked);
-
 
299
-
 
300
-
 
301
-
 
302
285
sql_str = tr("select * "
303
sql_str = tr("select * "
286
             " from DescriptionOfClasses where  DescriptionOfClasses.ID = "
304
             " from DescriptionOfClasses where  DescriptionOfClasses.DefaultValue = '"       //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì
287
             );
305
             );
288
sql_str.append(rootClassID);
306
sql_str.append(rootClassID);
289
307
-
 
308
sql_str.append(tr("' and DescriptionOfClasses.FieldType = 'pointer' "));
-
 
309
-
 
310
q.prepare(sql_str);
-
 
311
-
 
312
ok = q.exec();
-
 
313
if (!ok) {
-
 
314
                        QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
-
 
315
                                                                        this,                      // Ðîäèòåëüñêèé âèäæåò.
-
 
316
                                                                        QObject::tr("Database Error"),   // Çàãîëîâîê.
-
 
317
                                                                        q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
-
 
318
                 }
-
 
319
field_name = q.record().indexOf(tr("FieldName"));
-
 
320
while(q.next()){
-
 
321
-
 
322
                field_name_str = q.value(field_name).toString();
-
 
323
-
 
324
                }
-
 
325
-
 
326
}
-
 
327
-
 
328
-
 
329
-
 
330
QString MainWindow::ClassName(QString class_id){ //âîçâðàùàåò èìÿ êëàññà ïî åãî ID
-
 
331
    QSqlQuery q;
-
 
332
    QString sql_str;
-
 
333
    QString class_name_str;
-
 
334
    bool ok;
-
 
335
    int field_class_name;
-
 
336
-
 
337
    sql_str = tr("select * "
-
 
338
                 " from ListOfClasses where ListOfClasses.ID = '"       //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì
-
 
339
                 );
-
 
340
-
 
341
    sql_str.append(class_id);
-
 
342
    sql_str.append(tr("' "));
-
 
343
-
 
344
    q.prepare(sql_str);
-
 
345
-
 
346
    ok = q.exec();
-
 
347
-
 
348
-
 
349
    if (!ok) {
-
 
350
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
-
 
351
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
-
 
352
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
-
 
353
                                                                            q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
-
 
354
                     }
-
 
355
-
 
356
    field_class_name = q.record().indexOf(tr("ClassName"));
-
 
357
    while(q.next()){
-
 
358
-
 
359
                    class_name_str = q.value(field_class_name).toString();
-
 
360
-
 
361
                    }
-
 
362
-
 
363
    return class_name_str;
290
364
291
}
365
}
292
 
366