Хранилища Subversion OpenInventory

Редакция

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

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

136

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

140

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

158

159

159

160

160

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

163

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

166

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

168

169

169

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

172

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

176

177

177

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

180

181

181

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

184

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

186

187

187

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

189

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

191

192

192

193

193

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

253

254

254

255
                            }
255
                            }
256

256

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