Новый файл |
0,0 → 1,170 |
#include "mainwindow.h" |
#include "ui_mainwindow.h" |
|
|
|
void MainWindow::getDatabaseData(){ |
int list_count; |
|
if (rootItems.isEmpty()) return; |
|
list_count = rootItems.count(); |
|
for (int i=0; i < list_count; i++){ |
|
buildTree(rootItems.at(i)); |
|
} |
|
} |
|
void MainWindow::buildTree(QTreeWidgetItem * model_item){ |
QString model_name; |
QString rootClassID; |
QString rootClassInctance; |
|
QTreeWidgetItem * item; |
model_name = model_item->text(0); |
if (model_item->checkState(0) == false) return; |
item = new QTreeWidgetItem (ui->treeWidget_2); |
item->setText(0, model_name); |
rootClassID = model_item->child(0)->text(1); |
rootClassInctance = getClassInctance(rootClassID); |
if (model_item->child(0)->checkState(0)) // åñëè â ìîäåëè êîðíåâîé êëàññ âûáðàí äëÿ îòîáðàæåíèÿ (ñòîèò ãàëî÷êà), òî |
{ |
QTreeWidgetItem * item_tmp; |
item_tmp = new QTreeWidgetItem(item); // â äåðåâå, îòîáðàæàþùåì îáúåêòû êëàññîâ, ñîçäàåì íîâûé óçåë |
item_tmp->setText(0, model_item->child(0)->text(0)); // ñ íàçâàíèåì êëàññà |
|
showClassObjects(item_tmp, model_item->child(0)); // è âûâîäèì âñå îáúåêòû äàííîãî êëàññà |
} |
} |
|
|
// ïîëó÷àåì èìÿ òàáëèöû - õðàíèëèùà îáúåêòîâ êëàññà |
QString MainWindow::getClassInctance(QString class_id){ |
QSqlQuery q; |
QString sql_str; |
QString result; |
QString classInctance; |
int field_inctance; |
bool ok; |
sql_str = tr("select * " |
" from ListOfClasses where ListOfClasses.ID = '" //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì |
); |
sql_str.append(class_id); |
sql_str.append(tr("'")); |
q.prepare(sql_str); |
|
ok = q.exec(); |
if (!ok) { |
QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå. |
this, // Ðîäèòåëüñêèé âèäæåò. |
QObject::tr("Database Error"), // Çàãîëîâîê. |
q.lastError().text()); // Òåêñò ñîîáùåíèÿ. |
return result; |
} |
field_inctance = q.record().indexOf(tr("TableWhithInstance")); |
while(q.next()){ |
|
classInctance = q.value(field_inctance).toString(); |
result.append(classInctance); |
} |
|
return result; |
|
} |
|
void MainWindow::showClassObjects(QTreeWidgetItem * parent_item, QTreeWidgetItem * model_item){ |
QString classID; // èäåíòèôèêàòîð êëàññà |
QString inctance; // èìÿ òàáëèöû, õðàíèëèùà |
QSqlQuery q; |
QString sql_str; |
QString str_tmp; |
bool ok; |
int field_ID; |
int i; |
classID = model_item->text(1); |
inctance = getClassInctance(classID); |
|
sql_str = tr("select * " |
" from " //íàõîäèì âñå îáúåêòû êëàññà â òàáëèöå - õðàíèëèùå îáúåêòîâ êëàññà |
); |
sql_str.append(inctance); |
q.prepare(sql_str); |
|
ok = q.exec(); |
if (!ok) { |
QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå. |
this, // Ðîäèòåëüñêèé âèäæåò. |
QObject::tr("Database Error"), // Çàãîëîâîê. |
q.lastError().text()); // Òåêñò ñîîáùåíèÿ. |
return; |
} |
|
field_ID = q.record().indexOf(tr("ID")); |
|
|
while(q.next()){ |
if (q.record().count() > 1) |
{ |
QString value_tmp; |
QString ID_tmp; |
QTreeWidgetItem * itm; |
ID_tmp = q.value(field_ID).toString(); // îïðåäåëÿåì èäåíòèôèêàòîð îáúåêòà |
value_tmp = q.value(1).toString(); // îïðåäåëÿåì èìÿ îáúåêòà (äîëæíî õðàíèòüñÿ â ïåðâîì ïîëå) |
itm = new QTreeWidgetItem(parent_item); // äîáàâëÿåì â äåðåâî óçåë, ñîîòâåòñòâóþùèé îáúåêòó |
itm->setText(0, value_tmp); |
for (int i; i < model_item->childCount(); i++) // ïðîâåðÿåì, åñòü ëè ó êëàññà äî÷åðíèå êëàññû |
{ |
QTreeWidgetItem * model_item_tmp; // åñëè åñòü |
model_item_tmp = model_item->child(i); // îòîáðàæàåì îáúåêòû äî÷åðíèõ êëàññîâ |
MainWindow::showObjectChildrens(ID_tmp, itm, model_item_tmp); |
|
} |
} |
|
} |
|
|
i++; |
} |
|
|
|
void MainWindow::showObjectChildrens(QString object_ID, QTreeWidgetItem * object_item, QTreeWidgetItem * model_item){ // îòîáðàçèì îáúåêòû êëàññîâà |
|
QString classID; // èäåíòèôèêàòîð êëàññà |
|
QString inctance; // èìÿ òàáëèöû, õðàíèëèùà |
QSqlQuery q; |
QString sql_str; |
QString str_tmp; |
bool ok; |
classID = model_item->text(1); |
inctance = getClassInctance(classID); |
|
sql_str = tr("select * " |
" from '" //íàõîäèì âñå îáúåêòû êëàññà â òàáëèöå - õðàíèëèùå îáúåêòîâ êëàññà |
); |
sql_str.append(inctance); |
sql_str.append(tr("' where ")); |
|
|
q.prepare(sql_str); |
|
ok = q.exec(); |
if (!ok) { |
QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå. |
this, // Ðîäèòåëüñêèé âèäæåò. |
QObject::tr("Database Error"), // Çàãîëîâîê. |
q.lastError().text()); // Òåêñò ñîîáùåíèÿ. |
return; |
} |
} |
|
|
void MainWindow::showObjects(QTreeWidgetItem * parent_object_item, QTreeWidgetItem * model_item){ |
|
} |
|