/trunk/DBViewer/delegate.cpp |
---|
325,3 → 325,77 |
painter->setPen(pen); |
*/ |
} |
void TimeEditDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, |
const QModelIndex &index) const |
{ |
int datetime = index.model()->data(index, Qt::DisplayRole).toInt(); |
QString indexvalue = ""; |
if (datetime > 0) |
{ |
QDateTime dateTime2 = QDateTime(); |
dateTime2.setTime_t(datetime); |
indexvalue = dateTime2.toString(this->timeformat); |
} |
else |
{ |
indexvalue = tr("Date not set"); |
} |
Q_ASSERT(index.isValid()); |
QStyleOptionViewItemV3 opt = setOptions(index, option); |
const QStyleOptionViewItemV2 *v2 = qstyleoption_cast<const QStyleOptionViewItemV2 *>(&option); |
opt.features = v2 ? v2->features |
: QStyleOptionViewItemV2::ViewItemFeatures(QStyleOptionViewItemV2::None); |
const QStyleOptionViewItemV3 *v3 = qstyleoption_cast<const QStyleOptionViewItemV3 *>(&option); |
opt.locale = v3 ? v3->locale : QLocale(); |
opt.widget = v3 ? v3->widget : 0; |
// prepare |
painter->save(); |
painter->setClipRect(opt.rect); |
// get the data and the rectangles |
QVariant value; |
QPixmap pixmap; |
QRect decorationRect; |
value = index.data(Qt::DecorationRole); |
QString text; |
QRect displayRect; |
value = index.data(Qt::DisplayRole); |
if (value.isValid()) { |
text = indexvalue; |
displayRect = textRectangle(painter, option.rect, opt.font, text); |
} |
QRect checkRect; |
Qt::CheckState checkState = Qt::Unchecked; |
value = index.data(Qt::CheckStateRole); |
if (value.isValid()) { |
checkState = static_cast<Qt::CheckState>(value.toInt()); |
checkRect = check(opt, opt.rect, value); |
} |
// do the layout |
doLayout(opt, &checkRect, &decorationRect, &displayRect, false); |
// draw the item |
drawBackground(painter, opt, index); |
drawCheck(painter, opt, checkRect, checkState); |
drawDecoration(painter, opt, decorationRect, pixmap); |
drawDisplay(painter, opt, displayRect, text); |
drawFocus(painter, opt, displayRect); |
// done |
painter->restore(); |
} |
/trunk/DBViewer/mymodel.h |
---|
17,10 → 17,14 |
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; |
void setPointers(QMap <int, QString> newPointers){pointers_map = newPointers;} |
QMap <int, QString> pointers(){return pointers_map;} |
void setBooleansList(QList <int> newBoolList){bolleans_list = newBoolList;} |
private: |
QMap <int, QString> pointers_map; // â ýòîì ñâÿçàííîì ñïèñêå áóäåõ õðàíèòü â êà÷åñòâå êëþ÷à íîìåðÿ ñòîëáöîâ ñ óêàçàòåëÿìè |
// à â êà÷åñòâå çíà÷åíèé - èìåíà òàáëèö - õðàíèëèù îáúåêòîâ ðîäèòåëüñêîãî êëàññà |
QList <int> bolleans_list; // ñïèñîê ïîëåé ñ òèïîì "bool" |
signals: |
public slots: |
/trunk/DBViewer/mainwindow.cpp |
---|
79,8 → 79,10 |
connect(ui->getsettingAct, SIGNAL(triggered()), this, SLOT(getSetting())); // âûáîð â ãëàâíîé ôîðìå â ìåíþ "Áàçà äàííûõ" ïóíêòà "Ïàðàìåòðû ñîåäèíåíèÿ" |
connect(setFrm.pushButton, SIGNAL(clicked()), this, SLOT(applySetting())); |
picture_delegate = new CPictureDelegate(this); |
// connect(ui->tableView_2,SIGNAL(activated(QModelIndex)),ui->tableView_2,SLOT(edit(QModelIndex))); |
picture_delegate = new CPictureDelegate(this); |
} |
MainWindow::~MainWindow() |
/trunk/DBViewer/delegate.h |
---|
90,4 → 90,20 |
class TimeEditDelegate : public QItemDelegate |
{ |
Q_OBJECT |
public: |
TimeEditDelegate(const QString timeFormat = "dd.MM.yyyy hh:mm:ss",QObject *parent = 0) : QItemDelegate(parent) {this->timeformat = timeFormat;}; |
void paint(QPainter *painter, const QStyleOptionViewItem &option, |
const QModelIndex &index) const; |
private: |
QString timeformat; |
}; |
#endif // DELEGATE_H |
/trunk/DBViewer/mainwindow.h |
---|
128,9 → 128,13 |
// â êà÷åñòâå çíà÷åíèé ïîëó÷èì ñïèñîê òàáëèö-õðàíèëèù îáúåêòîâ ðîäèòåëüñêèõ êëàññîâ |
QStringList getDataFieldList(QString class_id); // ïîëó÷àåì ñïèñîê âñåõ ïîëåé c òèïîì "Äàòà", â êà÷åñòâå êëþ÷åé ïîëó÷èì èìåíà ïîëåé |
// â êà÷åñòâå çíà÷åíèé ïîëó÷èì ñïèñîê òàáëèö-õðàíèëèù îáúåêòîâ ðîäèòåëüñêèõ êëàññîâ |
QStringList getDataFieldList(QString class_id); // ïîëó÷àåì ñïèñîê âñåõ ïîëåé c òèïîì "Äàòà" |
QStringList getBoolFieldList(QString class_id); // ïîëó÷àåì ñïèñîê âñåõ ïîëåé c òèïîì "bool" |
SpinBoxDelegate spinDelegate; |
QItemDelegate standart_delegate; |
CPictureDelegate * picture_delegate; |
/trunk/DBViewer/database.cpp |
---|
372,8 → 372,9 |
QString inctance; |
QString filtr_tmp; |
QMap <QString, QString> pointersList; |
QStringList dateFieldList; |
QString pointer_name; |
QStringList dateFieldList; // ñïèñîê èìåí ïîëåé ñ òèïîì "DATE" |
QStringList boolFieldList; // ñïèñîê èìåí ïîëåé ñ òèïîì "BOOL" |
QString pointer_name; // ñïèñîê èìåí ïîëåé |
if (item_type == tr("object") || item_type == tr("class")){ |
381,6 → 382,7 |
static QList<int> colomns_indexes; // ñïèñîê íîìåðîâ ñòîëáöîâ òàáëèöû ñ íåñòàíäàðòíûìè äåëåãàòàìè |
static QList<int> date_colomns_indexes; // ñïèñîê íîìåðîâ ñòîëáöîâ òàáëèöû ñ äåëåãàòàìè äëÿ òèïà "DATE" |
static QList <int> bool_colomns_indexes; // ñïèñîê íîìåðîâ ñòîëáöîâ òàáëèöû ñ äåëåãàòàìè äëÿ òèïà "BOOL" |
static QList<SpinBoxDelegate *> spin_delegate_list;// ñïèñîê óêàçàòåëåé íà íåñòàíäàðòíûå äåëåãàòû |
SpinBoxDelegate * spin_delegate_tmp; |
399,8 → 401,18 |
} |
date_colomns_indexes.clear(); |
// "Î÷èñòèì" òàáëèöó îò äåëåãàòîâ äëÿ òèïà "BOOL" |
for (i=0; i < bool_colomns_indexes.size(); i++){ // äëÿ âñåõ ïîëåé-óêàçàòåëåé: |
ui->tableView->setItemDelegateForColumn(bool_colomns_indexes.at(i), &standart_delegate ); // è ïðèñâàèâàåì ñòàíäàðòíûé äåëåãàò |
// ui->tableView->setItemDelegateForColumn(colomns_indexes.at(i), &picture_delegate); |
} |
bool_colomns_indexes.clear(); |
if (item_type == tr("object")) |
{ |
QString ID; |
471,13 → 483,14 |
pointersList = getPointersList(class_id); // ïîëó÷àåì ñïèñîê ïîëåé-óêàçàòåëåé |
dateFieldList = getDataFieldList(class_id); // ïîëó÷àåì ñïèñîê ïîëåé c òèïîì "DATE" |
boolFieldList = getBoolFieldList(class_id); // ïîëó÷àåì ñïèñîê ïîëåé c òèïîì "BOOL" |
QMap <int, QString> pointersToModel; |
for (int i=0; i < dateFieldList.count(); i++){ // äëÿ âñåõ ïîëåé ñ òèïîì "DATA" |
static MyDEDelegate dateDelegate; |
static MyDEDelegate dateDelegate; |
// static TimeEditDelegate dateDelegate("01.10.2010"); |
QString dateFieldName; // èìÿ ïîëÿ |
int dataFieldIndex; // |
dateFieldName = dateFieldList.at(i); // îïðåäåëÿåì èìÿ ïîëÿ ñ òèïîì "DATA" |
488,8 → 501,21 |
} |
for (int i=0; i < boolFieldList.count(); i++){ // äëÿ âñåõ ïîëåé ñ òèïîì "BOOL" |
// // // // static MyDEDelegate dateDelegate; |
// static TimeEditDelegate dateDelegate("01.10.2010"); |
QString boolFieldName; // èìÿ ïîëÿ |
int boolFieldIndex; // |
boolFieldName = boolFieldList.at(i); // îïðåäåëÿåì èìÿ ïîëÿ ñ òèïîì "BOOL" |
boolFieldIndex = sql_mogel->record().indexOf(boolFieldName); // îïðåäåëÿåì íîìåð ñòîëáöà â ìîäåëå |
bool_colomns_indexes.append(boolFieldIndex);// çàïîìíèì íîìåð ñòîëáöà ñ òèïîì "DATA" |
// ui->tableView->setItemDelegateForColumn(dataFieldIndex, &dateDelegate); |
} |
sql_mogel->setBooleansList(bool_colomns_indexes); |
for (int i=0; i < spin_delegate_list.count(); i++){ // óäàëÿåì íåñòàíäàðòíûå äåëåãàòû |
delete spin_delegate_list.at(i); |
} |
683,7 → 709,6 |
ui->pushButton_3->setEnabled(true); |
ui->pushButton_4->setEnabled(true); |
} |
void MainWindow::on_model_for_ListModelsTable_dataChanged ( const QModelIndex & topLeft, const QModelIndex & bottomRight ){ // èçìåíèëè ñâîéñòâà îáúåêòà èëè äîáàâèëè íîâûé îáúåêò |
794,7 → 819,54 |
QStringList MainWindow::getBoolFieldList(QString class_id){ // ïîëó÷àåì ñïèñîê âñåõ ïîëåé c òèïîì "bool" |
QStringList result_str; |
QSqlQuery q; |
QString sql_str; |
QString str_tmp; |
QString field; |
QString result; |
int field_name, field_default_value; |
bool ok; |
sql_str = tr("select * " |
" from `DescriptionOfClasses` where `DescriptionOfClasses`.`FieldType` = 'BOOL' and `DescriptionOfClasses`.`ClassIdentifer` = " //íàõîäèì âñå îáúåêòû êëàññà â òàáëèöå - õðàíèëèùå îáúåêòîâ êëàññà |
); |
sql_str.append(tr("'")); |
sql_str.append(class_id); |
sql_str.append(tr("' ")); |
// sql_str.append(tr(" and `DescriptionOfClasses`.`ClassIdentifer` = '")); |
// sql_str.append(chield_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_str; |
} |
field_name = q.record().indexOf(tr("FieldName")); |
// field_default_value = q.record().indexOf(tr("DefaultValue")); |
while(q.next()){ |
QString DataFieldName; |
DataFieldName = q.value(field_name).toString(); |
result_str.append(DataFieldName); |
} |
return result_str; |
} |
// Ñ÷èòûâàåì íàñòðîéêè |
void MainWindow::readSettings() |
/trunk/DBViewer/mymodel.cpp |
---|
23,9 → 23,15 |
*************************************************/ |
if (bolleans_list.indexOf(index.column()) != -1) |
{ |
flags |= Qt::ItemIsUserCheckable; // åñëè â ñòîëáöå òèï "BOOL", äåëàåì åãî âèáèðàåìûì |
flags &= ~Qt::ItemIsEditable; |
} |
return flags; // òåêóùèé ñòîëáåö |
return flags; |
} |
47,37 → 53,56 |
str_tmp.append(tr("_instance")); |
} |
*/ |
lResult = QSqlTableModel::setData(index, value, role); |
// MyModel::record(index.row()); |
/*****************************************************8 |
if (lResult) { |
QModelIndex newindex; |
QSqlRecord rec = record(index.row()); |
rec.setValue(index.column(), value); |
rec.setGenerated(index.column(), true); |
if (bolleans_list.indexOf(index.column()) != -1) { |
// QModelIndex newindex; |
// QSqlRecord rec = record(index.row()); |
// bool chk = (value.toInt()==Qt::Checked); |
// rec.setValue(index.column(),chk); |
// rec.setValue(index.column(), value); |
// rec.setGenerated(index.column(), true); |
//lResult = QSqlTableModel::setData(index, value, role); |
// lResult = updateRowInTable(index.row(), rec); |
// lResult = setRecord(index.row(),rec); // âåðíåì ðåçóëüòàò îá óñòàíîâêå |
lResult = updateRowInTable(index.row(), rec); |
/// QSqlTableModel::setData(newindex, QVariant(str_tmp), Qt::EditRole); |
/* |
QStandardItem* item = static_cast<QStandardItem*>(index.internalPointer()); |
Qt::CheckState state = (value.toInt() == 2) ? Qt::Checked : Qt::Unchecked; |
item->setCheckState(state); |
*/ |
} |
**********************************************/ |
lResult = QSqlTableModel::setData(index, value, Qt::EditRole); |
// emit MyModel::dataChanged(index, index); |
// MyModel::reset(); |
// lResult = QSqlTableModel::setData(index, value, Qt::DisplayRole); |
// QSqlTableModel::setData(index, value, Qt::CheckStateRole); |
MyModel::submitAll(); |
////// // MyModel::select(); |
// MyModel::data(index, Qt::DisplayRole); |
} |
else |
{ |
lResult = QSqlTableModel::setData(index, value, role); |
} |
return lResult; |
return lResult; |
} |
84,6 → 109,7 |
QVariant MyModel::data(const QModelIndex &index, int role) const { |
QHash<int, bool> check; |
QVariant value = QSqlTableModel::data(index, role); |
QList <int> keys; |
QStringList values; |
93,7 → 119,13 |
switch (role) { |
case Qt::DisplayRole: |
{ |
int index_of_list; |
//if (check.contains(index.column()) && check.value(index.column())) |
// return value.toInt() != 0 ? tr("Yes") : tr("No"); |
if (bolleans_list.indexOf(index.column()) != -1) |
{ |
return value.toInt() != 0 ? tr("Äà") : tr("Íåò"); // äëÿ êîëîíîê ñ òèïîì "BOOL" |
} |
int index_of_list; |
index_of_list = keys.indexOf(index.column()); |
if (index_of_list == -1) return value; |
130,10 → 162,20 |
// return value.toString().prepend(tr("¹ ")); |
case Qt::EditRole: return value; |
case Qt::EditRole: |
if (bolleans_list.indexOf(index.column()) == -1) return value; // òåêóùèé ñòîëáåö |
else { |
return value.toInt() != 0 ? tr("Äà") : tr("Íåò"); |
} |
///return value; |
// if (index.column() == 1) |
// return value.toString().prepend(tr("¹ ")); |
case Qt::TextColorRole: |
if(index.column() == 1) |
return qVariantFromValue(QColor(Qt::blue)); |
159,8 → 201,17 |
case Qt::CheckStateRole: return value; |
case Qt::CheckStateRole: |
{ |
if (bolleans_list.indexOf(index.column()) == -1) return value; // òåêóùèé ñòîëáåö |
else |
{ |
return (QSqlQueryModel::data(index).toInt() != 0) ? Qt::Checked : Qt::Unchecked; |
} |
} |
case Qt::SizeHintRole:return value; |
} |