From 63b6227a1787c62d060aae23dd17ffeec1a3e712 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=B5=D0=BB=D0=B8=D0=BF=D0=B5=D0=BD=D0=BA=D0=BE=20?= =?UTF-8?q?=D0=98=D0=B2=D0=B0=D0=BD?= Date: Fri, 13 Jan 2017 13:00:45 +0000 Subject: [PATCH] git-svn-id: svn://db.shs.com.ru/libs@155 a8b55f48-bf90-11e4-a774-851b48703e85 --- piqt_utils/CMakeLists.txt | 2 +- qad_sql_table/sql_table_widget.cpp | 27 +++++++++++++++++---------- qad_sql_table/sql_table_widget.h | 6 ++++++ 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/piqt_utils/CMakeLists.txt b/piqt_utils/CMakeLists.txt index 2156cc8..e33de73 100644 --- a/piqt_utils/CMakeLists.txt +++ b/piqt_utils/CMakeLists.txt @@ -17,7 +17,7 @@ if(DEBUG) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g3") endif() set(LIBS ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY} ${PIP_LIBRARY} qad_widgets qad_utils qad_blockview) -pip_code_model(CCM "../pip/src/io/piiodevice.h" OPTIONS "-DPIP_EXPORT" "-Es") +pip_code_model(CCM "../pip/src/io/piiodevice.h" "../pip/src/io/pipacketextractor.h" OPTIONS "-DPIP_EXPORT" "-Es") #message(STATUS "pip_code_model for iodevice = ${CCM}") #message(STATUS "pip_INCLUDES = ${PIP_INCLUDES}") file(GLOB CPPS_UTILS "piqt_*.cpp") diff --git a/qad_sql_table/sql_table_widget.cpp b/qad_sql_table/sql_table_widget.cpp index 09944ab..c83b267 100644 --- a/qad_sql_table/sql_table_widget.cpp +++ b/qad_sql_table/sql_table_widget.cpp @@ -73,6 +73,7 @@ bool SQLQueryModel::setData(const QModelIndex& index, const QVariant & value, in //qDebug() << "[UPDATE]" << q.lastQuery(); dataChanged(index, index); updateTable(true); + emit tableChanged(); return true; } return false; @@ -112,6 +113,8 @@ void SQLUniEdit::setProp(const ColumnProperties & p) { default: wtext = new QLineEdit(this); connect(wtext, SIGNAL(textChanged(QString)), this, SLOT(value_text(QString))); break; } } + for (int i = 0; i < w_.size(); ++i) + if (*w_[i]) (*w_[i])->setHidden(false); resizeEvent(0); } @@ -348,7 +351,9 @@ SQLTableWidget::SQLTableWidget(QWidget * parent): QWidget(parent), filters_group //act_add.setText(trUtf8("Add ...")); //act_del.setText(trUtf8("Remove selected")); - popup_menu.addAction(QIcon(":/icons/edit-delete.png"), trUtf8("Remove selected"), this, SLOT(del_triggered())); + action_del = new QAction(QIcon(":/icons/edit-delete.png"), trUtf8("Remove selected"), this); + connect(action_del, SIGNAL(triggered(bool)), this, SLOT(del_triggered())); + popup_menu.addAction(action_del); ui->actionFilter_AND->setChecked(true); filters_group.addAction(ui->actionFilter_AND); filters_group.addAction(ui->actionFilter_OR); @@ -380,13 +385,13 @@ bool SQLTableWidget::eventFilter(QObject * o, QEvent * e) { if (o == ui->view->viewport()) { if (e->type() == QEvent::MouseButtonPress) { QMouseEvent * me = (QMouseEvent * )e; - if (me->button() == Qt::RightButton && !read_only) { + if (me->button() == Qt::RightButton) { + action_del->setVisible(!read_only); popup_menu.popup(me->globalPos()); } } } if (o == ui->view->horizontalHeader()->viewport()) { - static QPoint pp; QMouseEvent * me = (QMouseEvent * )e; if (e->type() == QEvent::MouseButtonPress) pp = me->pos(); @@ -425,7 +430,7 @@ bool SQLTableWidget::eventFilter(QObject * o, QEvent * e) { } else return true; } } - return QObject::eventFilter(o, e); + return QWidget::eventFilter(o, e); } @@ -448,6 +453,7 @@ void SQLTableWidget::setTableName(const QString & t) { } model = new SQLQueryModel(table_, connection_name, column_props, column_indexes, this); connect(model, SIGNAL(updateTable(bool)), this, SLOT(updateTable(bool))); + connect(model, SIGNAL(tableChanged()), this, SIGNAL(tableChanged())); //model->setTable(table_); cquery = "SELECT * FROM " + table_ + ";"; model->setQuery(cquery, QSqlDatabase::database(connection_name)); @@ -667,8 +673,7 @@ void SQLTableWidget::setConnectionName(const QString & conn_name) { QString SQLTableWidget::tableNames() { QString ret = table_; - static QSet rtables; - rtables.clear(); + QSet rtables; for (int i = 0; i < column_props.size(); ++i) { ColumnProperties & cp(column_props[i]); if (!cp.visible || cp.relation_key.isEmpty() || cp.relation_column.isEmpty()) @@ -765,9 +770,10 @@ void SQLTableWidget::on_buttonAdd_clicked() { } qs.append(");"); QSqlQuery q(QSqlDatabase::database(connection_name)); - if (q.exec(qs)) + if (q.exec(qs)) { updateTable(); - else + emit tableChanged(); + } else qDebug() << q.lastError(); //qDebug() << q.lastQuery(); } @@ -804,9 +810,10 @@ void SQLTableWidget::del_triggered() { qs.append(");"); //qDebug() << qs; return; QSqlQuery q(QSqlDatabase::database(connection_name)); - if (q.exec(qs)) + if (q.exec(qs)) { updateTable(); - else + emit tableChanged(); + } else qDebug() << q.lastError(); } diff --git a/qad_sql_table/sql_table_widget.h b/qad_sql_table/sql_table_widget.h index 89ba083..8dd80f4 100644 --- a/qad_sql_table/sql_table_widget.h +++ b/qad_sql_table/sql_table_widget.h @@ -82,6 +82,7 @@ protected: QString & conn_name; signals: void updateTable(bool save_selection); + void tableChanged(); }; @@ -129,6 +130,7 @@ signals: class SQLNewEdit: public QWidget { Q_OBJECT + friend class SQLTableWidget; public: explicit SQLNewEdit(const ColumnProperties & prop, const QString & conn_name, QWidget * parent = 0); ~SQLNewEdit() {delete line; delete check;} @@ -147,6 +149,7 @@ private: class SQLFilterEdit: public QWidget { Q_OBJECT + friend class SQLTableWidget; public: explicit SQLFilterEdit(const ColumnProperties & prop, const QString & conn_name, QWidget * parent = 0); ~SQLFilterEdit() {delete line; delete combo;} @@ -290,12 +293,14 @@ private: QMenu popup_menu, popup_col, popup_filter; QTime tm; QActionGroup filters_group; + QAction * action_del; QList add_actions; QMap > translates, fixed_translates; QMap col_vis; int timer; bool filters_active, table_opened, read_only, first_update; static QString _dir; + QPoint pp; QString connection_name; @@ -321,6 +326,7 @@ signals: void rowClicked(int row); void recordClicked(QSqlRecord rec); void selectionChanged(); + void tableChanged(); };