367,15 → 367,43 |
QTreeWidgetItem * parent_item; |
item_type = item->text(1); |
parent_item = item->parent(); |
|
QString class_id; // èäåíòèôèêàòîð âûáðàííîãî êëàññà |
QString inctance; |
QString filtr_tmp; |
QMap <QString, QString> pointersList; |
QStringList dateFieldList; |
QString pointer_name; |
|
if (item_type == tr("object") || item_type == tr("class")){ |
|
disconnect(sql_mogel, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(on_sql_mogel_dataChanged(QModelIndex,QModelIndex))); |
|
static QList<int> colomns_indexes; // ñïèñîê íîìåðîâ ñòîëáöîâ òàáëèöû ñ íåñòàíäàðòíûìè äåëåãàòàìè |
static QList<int> date_colomns_indexes; // ñïèñîê íîìåðîâ ñòîëáöîâ òàáëèöû ñ äåëåãàòàìè äëÿ òèïà "DATE" |
static QList<SpinBoxDelegate *> spin_delegate_list;// ñïèñîê óêàçàòåëåé íà íåñòàíäàðòíûå äåëåãàòû |
SpinBoxDelegate * spin_delegate_tmp; |
|
// Ñïåðâà "î÷èñòèì" òàáëèöó îò íåñòàíäàðòíûõ äåëåãàòîâ |
for (i=0; i < colomns_indexes.size(); i++){ // äëÿ âñåõ ïîëåé-óêàçàòåëåé: |
ui->tableView->setItemDelegateForColumn(colomns_indexes.at(i), &standart_delegate ); // è ïðèñâàèâàåì ñòàíäàðòíûé äåëåãàò |
// ui->tableView->setItemDelegateForColumn(colomns_indexes.at(i), &picture_delegate); |
|
} |
colomns_indexes.clear(); // î÷èùàåñ ñïèñîê ñòîëáöîâ ñ íåñòàíäàðòíûìè äåëåãàòàìè |
|
// "Î÷èñòèì" òàáëèöó îò äåëåãàòîâ äëÿ òèïà "DATE" |
for (i=0; i < date_colomns_indexes.size(); i++){ // äëÿ âñåõ ïîëåé-óêàçàòåëåé: |
ui->tableView->setItemDelegateForColumn(date_colomns_indexes.at(i), &standart_delegate ); // è ïðèñâàèâàåì ñòàíäàðòíûé äåëåãàò |
// ui->tableView->setItemDelegateForColumn(colomns_indexes.at(i), &picture_delegate); |
|
} |
|
|
|
if (item_type == tr("object")) |
{ |
QString class_id; |
QString ID; |
QString inctance; |
QString filtr_tmp; |
|
disconnect(sql_mogel, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(on_sql_mogel_dataChanged(QModelIndex,QModelIndex))); |
|
QString ID; |
ui->pushButton->setEnabled(false); |
ui->pushButton_2->setEnabled(false); |
|
384,10 → 412,8 |
inctance = parent_item->text(3); |
delete sql_mogel; |
|
///////sql_mogel = new QSqlTableModel(); |
sql_mogel = new MyModel(); |
|
// sql_mogel = new QSqlTableModel(this); |
sql_mogel->setTable(inctance); |
// sql_mogel->setEditStrategy(QSqlTableModel::OnFieldChange); |
sql_mogel->setEditStrategy(QSqlTableModel::OnManualSubmit); |
398,40 → 424,18 |
filtr_tmp.append(tr(" = '")); |
filtr_tmp.append(ID); |
filtr_tmp.append(tr("'")); |
sql_mogel->setFilter(filtr_tmp); |
sql_mogel->select(); |
|
|
ui->tableView->setModel(sql_mogel); |
ui->tableView->resizeColumnsToContents(); |
ui->tableView->hideColumn(0); |
|
connect(sql_mogel, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(on_sql_mogel_dataChanged(QModelIndex,QModelIndex))); |
|
//sql_mogel->clear(); |
//sql_mogel->select(); |
// ui->tableView->setVisible(false); |
// i++; |
} |
if (item_type == tr("class")) |
{ |
QString parent_object_id; // èäåíòèôèêàòîð ðîäèòåëüñêîãî îáúåêòà |
|
QString class_id; // èäåíòèôèêàòîð âûáðàííîãî êëàññà |
QString inctance; |
QString parent_class_inctance; |
QString pointer_name; |
QString filtr_tmp; |
|
|
|
// sql_mogel->clear(); |
|
ui->pushButton->setEnabled(true); |
ui->pushButton_2->setEnabled(true); |
|
disconnect(sql_mogel, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(on_sql_mogel_dataChanged(QModelIndex,QModelIndex))); |
|
parent_object_id = parent_item->text(2); |
|
parentObject_id = parent_item->text(2); |
439,15 → 443,9 |
class_id = item->text(2); |
inctance = item->text(3); |
|
// parent_class_inctance = parent_item->parent()->text(3); // óçíàåì õðàíèëèùå îáúåêòîâ ðîäèòåëüñêîãî êëàññà |
|
// pointer_name = parent_item->text(4); |
pointer_name = item->text(4); |
delete sql_mogel; |
|
|
////// sql_mogel = new QSqlTableModel(); |
|
sql_mogel = new MyModel(); |
|
// sql_mogel = new QSqlTableModel(this); |
463,152 → 461,102 |
filtr_tmp.append(tr(" = '")); |
filtr_tmp.append(parent_object_id); |
filtr_tmp.append(tr("'")); |
sql_mogel->setFilter(filtr_tmp); |
} |
|
/**************************************** |
spinDelegate.setInctance(parent_class_inctance); |
spinDelegate.getItems(); |
ui->tableView->setItemDelegateForColumn(2, &spinDelegate); |
***************************************/ |
|
|
sql_mogel->select(); |
|
QMap <QString, QString> pointersList = getPointersList(class_id); // ïîëó÷àåì ñïèñîê ïîëåé-óêàçàòåëåé |
QStringList dateFieldList = getDataFieldList(class_id); // ïîëó÷àåì ñïèñîê ïîëåé c òèïîì "DATE" |
|
QMap <int, QString> pointersToModel; |
|
//QStringList pointersNames; |
static QList<int> colomns_indexes; // ñïèñîê íîìåðîâ ñòîëáöîâ òàáëèöû ñ íåñòàíäàðòíûìè äåëåãàòàìè |
static QList<int> date_colomns_indexes; // ñïèñîê íîìåðîâ ñòîëáöîâ òàáëèöû ñ äåëåãàòàìè äëÿ òèïà "DATE" |
static QList<SpinBoxDelegate *> spin_delegate_list;// ñïèñîê óêàçàòåëåé íà íåñòàíäàðòíûå äåëåãàòû |
SpinBoxDelegate * spin_delegate_tmp; |
|
|
// Ñïåðâà "î÷èñòèì" òàáëèöó îò íåñòàíäàðòíûõ äåëåãàòîâ |
for (i=0; i < colomns_indexes.size(); i++){ // äëÿ âñåõ ïîëåé-óêàçàòåëåé: |
ui->tableView->setItemDelegateForColumn(colomns_indexes.at(i), &standart_delegate ); // è ïðèñâàèâàåì ñòàíäàðòíûé äåëåãàò |
// ui->tableView->setItemDelegateForColumn(colomns_indexes.at(i), &picture_delegate); |
|
} |
colomns_indexes.clear(); // î÷èùàåñ ñïèñîê ñòîëáöîâ ñ íåñòàíäàðòíûìè äåëåãàòàìè |
|
// "Î÷èñòèì" òàáëèöó îò äåëåãàòîâ äëÿ òèïà "DATE" |
for (i=0; i < date_colomns_indexes.size(); i++){ // äëÿ âñåõ ïîëåé-óêàçàòåëåé: |
ui->tableView->setItemDelegateForColumn(date_colomns_indexes.at(i), &standart_delegate ); // è ïðèñâàèâàåì ñòàíäàðòíûé äåëåãàò |
// ui->tableView->setItemDelegateForColumn(colomns_indexes.at(i), &picture_delegate); |
|
} |
date_colomns_indexes.clear(); // î÷èùàåì ñïèñîê ñòîëáöîâ ñ äåëåãàòàìè äëÿ òèïà "DATE" |
} |
|
|
|
for (int i=0; i < dateFieldList.count(); i++){ // äëÿ âñåõ ïîëåé ñ òèïîì "DATA" |
static MyDEDelegate dateDelegate; |
QString dateFieldName; // èìÿ ïîëÿ |
int dataFieldIndex; // |
dateFieldName = dateFieldList.at(i); // îïðåäåëÿåì èìÿ ïîëÿ ñ òèïîì "DATA" |
dataFieldIndex = sql_mogel->record().indexOf(dateFieldName); // îïðåäåëÿåì íîìåð ñòîëáöà â ìîäåëå |
date_colomns_indexes.append(dataFieldIndex);// çàïîìíèì íîìåð ñòîëáöà ñ äåëåãàòîì äëÿ òèïà "DATA" |
ui->tableView->setItemDelegateForColumn(dataFieldIndex, &dateDelegate); |
pointersList = getPointersList(class_id); // ïîëó÷àåì ñïèñîê ïîëåé-óêàçàòåëåé |
dateFieldList = getDataFieldList(class_id); // ïîëó÷àåì ñïèñîê ïîëåé c òèïîì "DATE" |
|
} |
QMap <int, QString> pointersToModel; |
|
|
|
for (int i=0; i < dateFieldList.count(); i++){ // äëÿ âñåõ ïîëåé ñ òèïîì "DATA" |
static MyDEDelegate dateDelegate; |
QString dateFieldName; // èìÿ ïîëÿ |
int dataFieldIndex; // |
dateFieldName = dateFieldList.at(i); // îïðåäåëÿåì èìÿ ïîëÿ ñ òèïîì "DATA" |
dataFieldIndex = sql_mogel->record().indexOf(dateFieldName); // îïðåäåëÿåì íîìåð ñòîëáöà â ìîäåëå |
date_colomns_indexes.append(dataFieldIndex);// çàïîìíèì íîìåð ñòîëáöà ñ äåëåãàòîì äëÿ òèïà "DATA" |
ui->tableView->setItemDelegateForColumn(dataFieldIndex, &dateDelegate); |
|
for (int i=0; i < spin_delegate_list.count(); i++){ // óäàëÿåì íåñòàíäàðòíûå äåëåãàòû |
delete spin_delegate_list.at(i); |
} |
} |
|
spin_delegate_list.clear(); // î÷èùàåì ñïèñîê óêàçàòåëåé íà íåñòàíäàðòíûå äåëåãàòû |
|
QStringList pointersNames; |
pointersNames = pointersList.keys(); //çäåñü ñïèñîê èìåí ïîëåé-óêàçàòåëåé íà ðîäèòåëüñêèå êëàññû |
|
|
for (int i=0; i < spin_delegate_list.count(); i++){ // óäàëÿåì íåñòàíäàðòíûå äåëåãàòû |
delete spin_delegate_list.at(i); |
} |
|
spin_delegate_list.clear(); // î÷èùàåì ñïèñîê óêàçàòåëåé íà íåñòàíäàðòíûå äåëåãàòû |
|
QStringList pointersNames; |
pointersNames = pointersList.keys(); //çäåñü ñïèñîê èìåí ïîëåé-óêàçàòåëåé íà ðîäèòåëüñêèå êëàññû |
|
// ui->tableView->setItemDelegateForColumn(2, picture_delegate); |
|
// ui->tableView->setRowHeight(1, 100); |
|
|
|
// ui->tableView->setItemDelegateForColumn(2, picture_delegate); |
|
// ui->tableView->setRowHeight(1, 100); |
|
QStringList parentInctancesList = pointersList.values(); // çäåñü ñïèñîê ñîîòâåòñòâóþùèõ õðàíèëèù |
|
for (i=0; i < pointersNames.size(); i++){ // äëÿ âñåõ ïîëåé-óêàçàòåëåé: |
QString pointerName; |
|
int pointerIndex; |
pointerName = pointersNames.at(i); // îïðåäåëÿåì èìÿ ïîëÿ-óêàçàòåëÿ |
pointerIndex = sql_mogel->record().indexOf(pointerName); // îïðåäåëÿåì íîìåð ñòîëáöà â ìîäåëå |
colomns_indexes.append(pointerIndex); // çàïîìíèì íîìåð ñòîëáöà ñ íåñòàíäàðòíûì äåëåãàòîì |
spin_delegate_tmp = new SpinBoxDelegate(); |
|
// // spinDelegate.setInctance(parentInctancesList.at(i)); // äåëåãàòó ïåðåäàåì èìÿ õðàíèëèùà îáúåêòîâ ðîäèòåëüñêîãî êëàññà |
// // spinDelegate.getItems(); // ïðîñèì äåëåãàòà ñîñòàâèòü ñïèñîê îáúåêòîâ â õðàíèëèùå |
|
spin_delegate_tmp->setInctance(parentInctancesList.at(i)); |
spin_delegate_tmp->getItems(); |
QStringList parentInctancesList = pointersList.values(); // çäåñü ñïèñîê ñîîòâåòñòâóþùèõ õðàíèëèù |
|
spin_delegate_list.append(spin_delegate_tmp); |
for (i=0; i < pointersNames.size(); i++){ // äëÿ âñåõ ïîëåé-óêàçàòåëåé: |
QString pointerName; |
|
// // ui->tableView->setItemDelegateForColumn(pointerIndex, &spinDelegate); // è ïðèñâàèâàåì åãî ñîîòâåòñòâóþùåìó ñòîëáöó íàøåé òàáëèöû |
int pointerIndex; |
pointerName = pointersNames.at(i); // îïðåäåëÿåì èìÿ ïîëÿ-óêàçàòåëÿ |
pointerIndex = sql_mogel->record().indexOf(pointerName); // îïðåäåëÿåì íîìåð ñòîëáöà â ìîäåëå |
colomns_indexes.append(pointerIndex); // çàïîìíèì íîìåð ñòîëáöà ñ íåñòàíäàðòíûì äåëåãàòîì |
spin_delegate_tmp = new SpinBoxDelegate(); |
|
ui->tableView->setItemDelegateForColumn(pointerIndex, spin_delegate_tmp); |
// // spinDelegate.setInctance(parentInctancesList.at(i)); // äåëåãàòó ïåðåäàåì èìÿ õðàíèëèùà îáúåêòîâ ðîäèòåëüñêîãî êëàññà |
// // spinDelegate.getItems(); // ïðîñèì äåëåãàòà ñîñòàâèòü ñïèñîê îáúåêòîâ â õðàíèëèùå |
|
pointersToModel.insert(pointerIndex, parentInctancesList.at(i)); // ôîðìèðóåì ñïèñîê ñòîëáöîâ ñ óêàçàòåëÿìè |
} |
spin_delegate_tmp->setInctance(parentInctancesList.at(i)); |
spin_delegate_tmp->getItems(); |
|
sql_mogel->setPointers(pointersToModel); // ïåðåäàåì ñïèñîê ìîäåëè |
spin_delegate_list.append(spin_delegate_tmp); |
|
pointer_index = sql_mogel->record().indexOf(pointer_name); // ýòî ãëîáàëüíàÿ ïåðåìåííàÿ, íå òðîãàåì, íóæíà! :-) |
// // ui->tableView->setItemDelegateForColumn(pointerIndex, &spinDelegate); // è ïðèñâàèâàåì åãî ñîîòâåòñòâóþùåìó ñòîëáöó íàøåé òàáëèöû |
|
ui->tableView->setModel(sql_mogel); |
ui->tableView->setItemDelegateForColumn(pointerIndex, spin_delegate_tmp); |
|
ui->tableView->resizeColumnsToContents(); |
ui->tableView->hideColumn(0); |
pointersToModel.insert(pointerIndex, parentInctancesList.at(i)); // ôîðìèðóåì ñïèñîê ñòîëáöîâ ñ óêàçàòåëÿìè |
} |
|
sql_mogel->setPointers(pointersToModel); // ïåðåäàåì ñïèñîê ìîäåëè |
|
pointer_index = sql_mogel->record().indexOf(pointer_name); // ýòî ãëîáàëüíàÿ ïåðåìåííàÿ, íå òðîãàåì, íóæíà! :-) |
|
|
|
|
sql_mogel->setFilter(filtr_tmp); |
sql_mogel->select(); |
|
/**********************************************************/ |
connect(sql_mogel, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(on_sql_mogel_dataChanged(QModelIndex,QModelIndex))); |
|
// for (int i; i < sql_mogel->rowCount(); i++ ) { |
// ui->tableView->setRowHeight(i, 100); |
// } |
ui->tableView->setModel(sql_mogel); |
|
/**********************************************************/ |
ui->tableView->resizeColumnsToContents(); |
ui->tableView->hideColumn(0); |
|
|
|
|
|
|
connect(sql_mogel, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(on_sql_mogel_dataChanged(QModelIndex,QModelIndex))); |
|
|
// ui->tableView->setVisible(true);; |
i++; |
} |
|
//parent_object_id = parent_object_item->text(1); |
|
|
|
|
|
i++; |
|
} |
|
|