Хранилища Subversion OpenInventory

Сравнить редакции

Не учитывать пробелы Редакция 157 → Редакция 158

/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;
 
}
/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;