Хранилища Subversion OpenInventory

Редакция

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

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

136

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

140

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

158

157

159

158

160

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

163

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

166

165
        model->select();
167
        model->select();
166

168

167

169

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

172

171
        bool okey;
173
        bool okey;
172
        int index;
174
        int index;
173
        QSqlRecord record;
175
        QSqlRecord record;
174

176

175

177

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

180

179

181

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

184

183
        tableView->resizeColumnsToContents();
185
        tableView->resizeColumnsToContents();
184

186

185

187

186
        view.resizeColumnsToContents();
188
        view.resizeColumnsToContents();
187

189

188
        tableView->show();
190
        tableView->show();
189

191

190

192

191

193

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

-
 
254

-
 
255
                            }
-
 
256

-
 
257
*/
-
 
258
    if (!ok) {
-
 
259
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
-
 
260
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
-
 
261
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
-
 
262
                                                                            sql.lastError().text());          // Òåêñò ñîîáùåíèÿ.
-
 
263
                     }
-
 
264
else {
-
 
265
-
 
266
        QMessageBox::information( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
-
 
267
                                                        this,                      // Ðîäèòåëüñêèé âèäæåò.
-
 
268
                                                        QObject::tr("Database Connect"),   // Çàãîëîâîê.
-
 
269
                                                        QObject::tr("Ñîåäèíåíèå ñ áàçîé äàííûõ óñïåøíî óñòàíîâëåíî."));         // Òåêñò ñîîáùåíèÿ.
-
 
270
-
 
271
-
 
272
-
 
273
-
 
274
-
 
275
    }
-
 
276
-
 
277
     return ok;
-
 
278
}
232
 
279