diff --git a/sources/dataBase/ui/elementquerywidget.cpp b/sources/dataBase/ui/elementquerywidget.cpp index fe78e882f..9bd9f12cc 100644 --- a/sources/dataBase/ui/elementquerywidget.cpp +++ b/sources/dataBase/ui/elementquerywidget.cpp @@ -118,7 +118,7 @@ void ElementQueryWidget::setQuery(const QString &query) QString select = query; select.remove(0,7); //Remove SELECT select.truncate(select.indexOf("FROM")); //Truncate at FROM - select.replace(" ", ""); //Remove withe space + select.replace(" ", ""); //Remove white space //Get the select -> the item in the right list QStringList split = select.split(","); @@ -367,25 +367,6 @@ QString ElementQueryWidget::queryStr() const return q; } -/** - * @brief ElementQueryWidget::header - * @return the name of each selected item is a QStringList. - * You can use the QStringList as header string of a table filled by the returned value of the query ElementQueryWidget::queryStr() to project database. - */ -QStringList ElementQueryWidget::header() const -{ - //Made a string list with the colomns (keys) choosen by the user - QStringList headers; - int row = 0; - while (auto *item = ui->m_choosen_list->item(row)) - { - headers.append(item->data(Qt::DisplayRole).toString()); - ++row; - } - - return headers; -} - /** * @brief ElementQueryWidget::updateQueryLine */ diff --git a/sources/dataBase/ui/elementquerywidget.h b/sources/dataBase/ui/elementquerywidget.h index 80cd315b9..be9be047f 100644 --- a/sources/dataBase/ui/elementquerywidget.h +++ b/sources/dataBase/ui/elementquerywidget.h @@ -42,7 +42,6 @@ class ElementQueryWidget : public QWidget void setQuery(const QString &query); QString queryStr() const; - QStringList header() const; static QString modelIdentifier() {return "nomenclature";} diff --git a/sources/dataBase/ui/summaryquerywidget.cpp b/sources/dataBase/ui/summaryquerywidget.cpp index 6a4ab8c71..282b4c3ba 100644 --- a/sources/dataBase/ui/summaryquerywidget.cpp +++ b/sources/dataBase/ui/summaryquerywidget.cpp @@ -47,7 +47,7 @@ SummaryQueryWidget::~SummaryQueryWidget() /** * @brief SummaryQueryWidget::queryStr - * @return + * @return The current query string */ QString SummaryQueryWidget::queryStr() const { @@ -78,6 +78,40 @@ QString SummaryQueryWidget::queryStr() const return q; } +/** + * @brief SummaryQueryWidget::setQuery + * @param query + * set the current query to @query. + * If it's possible, rebuild the state of the widget from the query + */ +void SummaryQueryWidget::setQuery(const QString &query) +{ + if (query.startsWith("SELECT")) + { + reset(); + ui->m_user_query_le->setText(query); + + QString select = query; + select.remove(0,7); //remove SELECT + select.truncate(select.indexOf("FROM")); //Truncate at FROM + select.replace(" ",""); //Remove white + + //Get the select -> the item in the right list + QStringList split = select.split(","); + for (auto str : split) + { + for (auto item : m_items_list) + { + if (item->data(Qt::UserRole).toString() == str) { + ui->m_available_list->takeItem(ui->m_available_list->row(item)); + ui->m_choosen_list->addItem(item); + continue; + } + } + } + } +} + /** * @brief SummaryQueryWidget::setUpItems */ @@ -97,6 +131,9 @@ void SummaryQueryWidget::setUpItems() m_items_list << item; } +/** + * @brief SummaryQueryWidget::fillSavedQuery + */ void SummaryQueryWidget::fillSavedQuery() { @@ -126,6 +163,11 @@ QStringList SummaryQueryWidget::selectedKeys() const return keys; } + +/** + * @brief SummaryQueryWidget::on_m_available_list_itemDoubleClicked + * @param item + */ void SummaryQueryWidget::on_m_available_list_itemDoubleClicked(QListWidgetItem *item) { Q_UNUSED(item) @@ -200,6 +242,9 @@ void SummaryQueryWidget::on_m_down_pb_clicked() updateQueryLine(); } +/** + * @brief SummaryQueryWidget::on_m_edit_sql_query_cb_clicked + */ void SummaryQueryWidget::on_m_edit_sql_query_cb_clicked() { ui->m_user_query_le->setEnabled(ui->m_edit_sql_query_cb->isChecked()); @@ -215,3 +260,16 @@ void SummaryQueryWidget::on_m_edit_sql_query_cb_clicked() updateQueryLine(); } } + +/** + * @brief SummaryQueryWidget::reset + * Clear this widget aka set to initial state + */ +void SummaryQueryWidget::reset() +{ + //Ugly hack to force to remove all selected infos + while (auto item = ui->m_choosen_list->takeItem(0)) { + ui->m_available_list->addItem(item); + } + ui->m_user_query_le->clear(); +} diff --git a/sources/dataBase/ui/summaryquerywidget.h b/sources/dataBase/ui/summaryquerywidget.h index d6263afc6..6333b85d2 100644 --- a/sources/dataBase/ui/summaryquerywidget.h +++ b/sources/dataBase/ui/summaryquerywidget.h @@ -36,6 +36,7 @@ class SummaryQueryWidget : public QWidget static QString modelIdentifier() {return "summary";} QString queryStr() const; + void setQuery(const QString &query); private: void setUpItems(); @@ -51,6 +52,7 @@ class SummaryQueryWidget : public QWidget void on_m_remove_pb_clicked(); void on_m_down_pb_clicked(); void on_m_edit_sql_query_cb_clicked(); + void reset(); private: Ui::SummaryQueryWidget *ui; diff --git a/sources/qetapp.cpp b/sources/qetapp.cpp index 6ca321a2c..dfc1744a6 100644 --- a/sources/qetapp.cpp +++ b/sources/qetapp.cpp @@ -340,11 +340,8 @@ QString QETApp::elementTranslatedInfoKey(const QString &info) else if (info == "supplier") return tr("Fournisseur"); else if (info == "quantity") return tr("Quantité"); else if (info == "unity") return tr("Unité"); - - - - - return (info); + + else return QString(); } /** @@ -440,8 +437,9 @@ QString QETApp::diagramTranslatedInfoKey(const QString &key) else if (key == "folio") return tr("Folio"); else if (key == "plant") return tr("Installation"); else if (key == "locmach") return tr("Localisation"); - else if (key == "indexrev") return tr("Indice Rev"); + else if (key == "indexrev") return tr("Indice de révision"); else if (key == "date") return tr("Date"); + else if (key == "pos") return tr("Position"); else return QString(); } diff --git a/sources/qetgraphicsitem/ViewItem/projectdbmodel.cpp b/sources/qetgraphicsitem/ViewItem/projectdbmodel.cpp index 3812bbcae..8ddb3cd69 100644 --- a/sources/qetgraphicsitem/ViewItem/projectdbmodel.cpp +++ b/sources/qetgraphicsitem/ViewItem/projectdbmodel.cpp @@ -100,7 +100,7 @@ bool ProjectDBModel::setHeaderData(int section, Qt::Orientation orientation, con auto hash_ = m_header_data.value(section); hash_.insert(role, value); m_header_data.insert(section, hash_); - headerDataChanged(orientation, section, section); + emit headerDataChanged(orientation, section, section); return true; } @@ -329,29 +329,29 @@ void ProjectDBModel::dataBaseUpdated() void ProjectDBModel::setHeaderString() { - auto q = m_project->dataBase()->newQuery(m_query); - auto record = q.record(); + auto q = m_project->dataBase()->newQuery(m_query); + auto record = q.record(); - for (auto i=0 ; isetHeaderData(i, Qt::Horizontal, header_name); - } + if (field_name == "position") { + header_name = tr("Position"); + } else if (field_name == "diagram_position") { + header_name = tr("Position du folio"); + } else { + header_name = QETApp::elementTranslatedInfoKey(field_name); + if (header_name.isEmpty()) { + header_name = QETApp::diagramTranslatedInfoKey(field_name); + } + if (header_name.isEmpty()) { + header_name = field_name; + } + } + this->setHeaderData(i, Qt::Horizontal, header_name, Qt::DisplayRole); + } } void ProjectDBModel::fillValue() diff --git a/sources/qetgraphicsitem/ViewItem/projectdbmodel.h b/sources/qetgraphicsitem/ViewItem/projectdbmodel.h index 8097aac93..8e80d4c92 100644 --- a/sources/qetgraphicsitem/ViewItem/projectdbmodel.h +++ b/sources/qetgraphicsitem/ViewItem/projectdbmodel.h @@ -31,6 +31,9 @@ class QETProject; * This class should be sufficient to display the content of the project data base from a query set by the method void ProjectDBModel::setQuery(const QString &query). * The indentifier method is used by widget editor to retrieve the good widget for edit the query. By defaut identifer return the string 'unknow'. * You should use setIdentfier method to set your custom identifier. + * At the time this sentence is written, there is two identifier : + * nomenclature + * summary */ class ProjectDBModel : public QAbstractTableModel { @@ -53,7 +56,7 @@ class ProjectDBModel : public QAbstractTableModel QDomElement toXml(QDomDocument &document) const; void fromXml(const QDomElement &element); void setIdentifier(const QString &identifier); - QString indentifier() const {return m_identifier;} + QString identifier() const {return m_identifier;} static QString xmlTagName() {return QString("project_data_base_model");} private: diff --git a/sources/qetgraphicsitem/ViewItem/qetgraphicsheaderitem.cpp b/sources/qetgraphicsitem/ViewItem/qetgraphicsheaderitem.cpp index 7970b8f7e..a6e85c78d 100644 --- a/sources/qetgraphicsitem/ViewItem/qetgraphicsheaderitem.cpp +++ b/sources/qetgraphicsitem/ViewItem/qetgraphicsheaderitem.cpp @@ -132,7 +132,7 @@ void QetGraphicsHeaderItem::paint(QPainter *painter, const QStyleOptionGraphicsI QSize size(m_current_sections_width.at(i) - margins_.left() - margins_.right(), m_section_height - margins_.top() - margins_.bottom()); painter->drawText(QRectF(top_left, size), m_model->headerData(0, Qt::Horizontal, Qt::TextAlignmentRole).toInt(), - m_model->headerData(i, Qt::Horizontal).toString()); + m_model->headerData(i, Qt::Horizontal, Qt::DisplayRole).toString()); top_left.setX(top_left.x() + m_current_sections_width.at(i)); } diff --git a/sources/qetgraphicsitem/ViewItem/ui/graphicstablepropertieseditor.h b/sources/qetgraphicsitem/ViewItem/ui/graphicstablepropertieseditor.h index 293ed04db..1f5638ff6 100644 --- a/sources/qetgraphicsitem/ViewItem/ui/graphicstablepropertieseditor.h +++ b/sources/qetgraphicsitem/ViewItem/ui/graphicstablepropertieseditor.h @@ -56,12 +56,10 @@ class GraphicsTablePropertiesEditor : public PropertiesEditorWidget void on_m_previous_table_cb_activated(int index); void on_m_previous_pb_clicked(); void on_m_next_pb_clicked(); - void on_m_auto_geometry_pb_clicked(); - void on_m_apply_geometry_to_linked_table_pb_clicked(); - private: + private: void setUpEditConnection(); private: diff --git a/sources/qetgraphicsitem/ViewItem/ui/projectdbmodelpropertieswidget.cpp b/sources/qetgraphicsitem/ViewItem/ui/projectdbmodelpropertieswidget.cpp index 3aba98fc1..db47de28d 100644 --- a/sources/qetgraphicsitem/ViewItem/ui/projectdbmodelpropertieswidget.cpp +++ b/sources/qetgraphicsitem/ViewItem/ui/projectdbmodelpropertieswidget.cpp @@ -20,6 +20,7 @@ #include "projectdbmodel.h" #include "qetproject.h" #include "elementquerywidget.h" +#include "summaryquerywidget.h" #include @@ -62,9 +63,20 @@ void ProjectDBModelPropertiesWidget::on_m_edit_query_pb_clicked() auto l = new QVBoxLayout; d.setLayout(l); - auto query_widget = new ElementQueryWidget(&d); - query_widget->setQuery(m_model->queryString()); - l->addWidget(query_widget); + ElementQueryWidget *nom_w = nullptr; + SummaryQueryWidget *sum_w = nullptr; + if (m_model->identifier() == "nomenclature") + { + nom_w = new ElementQueryWidget(&d); + nom_w->setQuery(m_model->queryString()); + l->addWidget(nom_w); + } + else if (m_model->identifier() == "summary") + { + sum_w = new SummaryQueryWidget(&d); + sum_w->setQuery(m_model->queryString()); + l->addWidget(sum_w); + } auto button_box = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); l->addWidget(button_box); @@ -73,10 +85,10 @@ void ProjectDBModelPropertiesWidget::on_m_edit_query_pb_clicked() if (d.exec()) { - m_model->setQuery(query_widget->queryStr()); - auto headers = query_widget->header(); - for (auto i=0 ; isetHeaderData(i, Qt::Horizontal, headers.at(i)); + if (nom_w) { + m_model->setQuery(nom_w->queryStr()); + } else if (sum_w) { + m_model->setQuery(sum_w->queryStr()); } } }