diff --git a/sources/ui/linksingleelementwidget.cpp b/sources/ui/linksingleelementwidget.cpp index 94edbfad0..e575b7e18 100644 --- a/sources/ui/linksingleelementwidget.cpp +++ b/sources/ui/linksingleelementwidget.cpp @@ -44,6 +44,7 @@ LinkSingleElementWidget::LinkSingleElementWidget(Element *elmt, QWidget *parent) m_link_action = new QAction(tr("Lier l'élément"), this); m_show_qtwi = new QAction(tr("Montrer l'élément"), this); m_show_element = new QAction(tr("Montrer l'élément esclave"), this); + m_save_header_state = new QAction(tr("Enregistrer la disposition"), this); connect(m_show_qtwi, &QAction::triggered, [this]() {this->on_m_tree_widget_itemDoubleClicked(this->m_qtwi_at_context_menu, 0);}); connect(m_link_action, &QAction::triggered, this, &LinkSingleElementWidget::linkTriggered); @@ -56,9 +57,19 @@ LinkSingleElementWidget::LinkSingleElementWidget(Element *elmt, QWidget *parent) m_showed_element->setHighlighted(false); }); -// QHeaderView *qhv = ui->m_tree_widget->header(); -// qhv->setContextMenuPolicy(Qt::CustomContextMenu); -// connect(qhv, &QHeaderView::customContextMenuRequested, [](){qDebug() << "test";}); + QHeaderView *qhv = ui->m_tree_widget->header(); + qhv->setContextMenuPolicy(Qt::CustomContextMenu); + connect(qhv, &QHeaderView::customContextMenuRequested, this, &LinkSingleElementWidget::headerCustomContextMenuRequested); + connect(m_save_header_state, &QAction::triggered, [this, qhv]() + { + QByteArray qba = qhv->saveState(); + QSettings settings; + + if (this->m_element->linkType() & Element::AllReport) + settings.setValue("link-element-widget/report-state", qba); + else if (this->m_element->linkType() == Element::Slave) + settings.setValue("link-element-widget/slave-state", qba); + }); setElement(elmt); } @@ -196,6 +207,7 @@ void LinkSingleElementWidget::buildTree() { clearTreeWidget(); setUpHeaderLabels(); + ui->m_tree_widget->header()->resetDefaultSectionSize(); if (m_element->linkType() == Element::Slave) { @@ -229,6 +241,11 @@ void LinkSingleElementWidget::buildTree() m_qtwi_elmt_hash.insert(qtwi, elmt); m_qtwi_strl_hash.insert(qtwi, search_list); } + + QSettings settings; + QVariant v = settings.value("link-element-widget/slave-state"); + if(!v.isNull()) + ui->m_tree_widget->header()->restoreState(v.toByteArray()); } else if (m_element->linkType() & Element::AllReport) @@ -272,6 +289,11 @@ void LinkSingleElementWidget::buildTree() m_qtwi_elmt_hash.insert(qtwi, elmt); m_qtwi_strl_hash.insert(qtwi, search_list); } + + QSettings settings; + QVariant v = settings.value("link-element-widget/report-state"); + if(!v.isNull()) + ui->m_tree_widget->header()->restoreState(v.toByteArray()); } setUpCompleter(); @@ -452,6 +474,13 @@ void LinkSingleElementWidget::showButtons() ui->m_search_field->hide(); } +void LinkSingleElementWidget::headerCustomContextMenuRequested(const QPoint &pos) +{ + m_context_menu->clear(); + m_context_menu->addAction(m_save_header_state); + m_context_menu->popup(ui->m_tree_widget->header()->mapToGlobal(pos)); +} + void LinkSingleElementWidget::on_m_unlink_pb_clicked() { m_unlink = true; diff --git a/sources/ui/linksingleelementwidget.h b/sources/ui/linksingleelementwidget.h index 983a369c8..f0654f329 100644 --- a/sources/ui/linksingleelementwidget.h +++ b/sources/ui/linksingleelementwidget.h @@ -70,6 +70,7 @@ class LinkSingleElementWidget : public AbstractElementPropertiesEditorWidget void linkTriggered(); void hideButtons(); void showButtons(); + void headerCustomContextMenuRequested(const QPoint &pos); void on_m_unlink_pb_clicked(); void on_m_tree_widget_itemDoubleClicked(QTreeWidgetItem *item, int column); @@ -97,7 +98,8 @@ class LinkSingleElementWidget : public AbstractElementPropertiesEditorWidget QMenu *m_context_menu; QAction *m_link_action, *m_show_qtwi, - *m_show_element; + *m_show_element, + *m_save_header_state; }; #endif // LINKSINGLEELEMENTWIDGET_H diff --git a/sources/ui/masterpropertieswidget.cpp b/sources/ui/masterpropertieswidget.cpp index 964a17c1b..eca3511da 100644 --- a/sources/ui/masterpropertieswidget.cpp +++ b/sources/ui/masterpropertieswidget.cpp @@ -46,6 +46,7 @@ MasterPropertiesWidget::MasterPropertiesWidget(Element *elmt, QWidget *parent) : m_unlink_action = new QAction(tr("Délier l'élément"), this); m_show_qtwi = new QAction(tr("Montrer l'élément"), this); m_show_element = new QAction(tr("Montrer l'élément maître"), this); + m_save_header_state = new QAction(tr("Enregistrer la disposition"), this); connect(ui->m_free_tree_widget, &QTreeWidget::itemDoubleClicked, this, &MasterPropertiesWidget::showElementFromTWI); connect(ui->m_link_tree_widget, &QTreeWidget::itemDoubleClicked, this, &MasterPropertiesWidget::showElementFromTWI); @@ -65,6 +66,16 @@ MasterPropertiesWidget::MasterPropertiesWidget(Element *elmt, QWidget *parent) : m_showed_element->setHighlighted(false); }); + QHeaderView *qhv = ui->m_free_tree_widget->header(); + qhv->setContextMenuPolicy(Qt::CustomContextMenu); + connect(qhv, &QHeaderView::customContextMenuRequested, this, &MasterPropertiesWidget::headerCustomContextMenuRequested); + connect(m_save_header_state, &QAction::triggered, [this, qhv]() + { + QByteArray qba = qhv->saveState(); + QSettings settings; + settings.setValue("link-element-widget/master-state", qba); + }); + setElement(elmt); } @@ -249,7 +260,20 @@ void MasterPropertiesWidget::updateUi() if(items_list.count()) ui->m_link_tree_widget->addTopLevelItems(items_list); + QSettings settings; + QVariant v = settings.value("link-element-widget/master-state"); + if(!v.isNull()) + { + ui->m_free_tree_widget->header()->restoreState(v.toByteArray()); + ui->m_link_tree_widget->header()->restoreState(v.toByteArray()); + } +} +void MasterPropertiesWidget::headerCustomContextMenuRequested(const QPoint &pos) +{ + m_context_menu->clear(); + m_context_menu->addAction(m_save_header_state); + m_context_menu->popup(ui->m_free_tree_widget->header()->mapToGlobal(pos)); } /** diff --git a/sources/ui/masterpropertieswidget.h b/sources/ui/masterpropertieswidget.h index 9861163e6..713852cc7 100644 --- a/sources/ui/masterpropertieswidget.h +++ b/sources/ui/masterpropertieswidget.h @@ -59,6 +59,7 @@ class MasterPropertiesWidget : public AbstractElementPropertiesEditorWidget void updateUi(); private slots: + void headerCustomContextMenuRequested(const QPoint &pos); void on_link_button_clicked(); void on_unlink_button_clicked(); void showElementFromTWI(QTreeWidgetItem *qtwi, int column); @@ -76,7 +77,8 @@ class MasterPropertiesWidget : public AbstractElementPropertiesEditorWidget QAction *m_link_action, *m_unlink_action, *m_show_qtwi, - *m_show_element; + *m_show_element, + *m_save_header_state; }; #endif // MASTERPROPERTIESWIDGET_H