Хранилища Subversion OpenInventory

Редакция

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

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

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

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

159
160

160
161

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

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

167
168
        model->select();
168
169

169
170

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

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

177
178

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

181
182

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

185
186
        tableView->resizeColumnsToContents();
186
187

187
188

188
189
        view.resizeColumnsToContents();
189
190

190
191
        tableView->show();
191
192

192
193

193
194

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

254
255

255
256
                            }
256
257

257
258
*/
258
259
    if (!ok) {
259
260
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
260
261
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
261
262
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
262
263
                                                                            sql.lastError().text());          // Òåêñò ñîîáùåíèÿ.
263
264
                     }
264
265
else {
265
266
266
267
        QMessageBox::information( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
267
268
                                                        this,                      // Ðîäèòåëüñêèé âèäæåò.
268
269
                                                        QObject::tr("Database Connect"),   // Çàãîëîâîê.
269
270
                                                        QObject::tr("Ñîåäèíåíèå ñ áàçîé äàííûõ óñïåøíî óñòàíîâëåíî."));         // Òåêñò ñîîáùåíèÿ.
270
271
271
272
272
273
273
274
274
275
275
276
    }
276
277
277
278
     return ok;
278
279
}
279
280
280
281
281
282
bool MainWindow::buildPreviewModel(QString rootClassID){
282
283
QSqlQuery q;
283
284
QString sql_str;
-
 
285
QString field_name_str;
-
 
286
QString root_class_name;
-
 
287
bool ok;
284
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
303
sql_str = tr("select * "
286
304
             " from DescriptionOfClasses where  DescriptionOfClasses.DefaultValue = '"       //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì
287
305
             );
288
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
-
 
365
}
-
 
366