Subversion Repositories OpenInventory

Compare Revisions

Ignore whitespace Rev 156 → Rev 157

/trunk/DBViewer/database.cpp
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++;
 
}