From 389cc1fa7ef3887f9279921c34274b92ff58fffb Mon Sep 17 00:00:00 2001 From: vorzelmir Date: Sun, 14 Jul 2019 21:21:36 +0300 Subject: [PATCH] make details hide of visible depend on its layout status --HG-- branch : develop --- src/app/valentina/dialogs/vwidgetdetails.cpp | 44 ++++++++++++++++++++ src/app/valentina/dialogs/vwidgetdetails.h | 3 ++ src/app/valentina/dialogs/vwidgetdetails.ui | 13 ++++++ 3 files changed, 60 insertions(+) diff --git a/src/app/valentina/dialogs/vwidgetdetails.cpp b/src/app/valentina/dialogs/vwidgetdetails.cpp index deec3f1b1..abc4805f3 100644 --- a/src/app/valentina/dialogs/vwidgetdetails.cpp +++ b/src/app/valentina/dialogs/vwidgetdetails.cpp @@ -28,10 +28,12 @@ #include "vwidgetdetails.h" #include "ui_vwidgetdetails.h" +#include "vwidgetdetails.h" #include "../ifc/xml/vabstractpattern.h" #include "../vpatterndb/vcontainer.h" #include "../vmisc/vabstractapplication.h" #include "../vtools/undocommands/togglepiecestate.h" +#include "../vtools/tools/vtoolseamallowance.h" #include #include @@ -45,6 +47,8 @@ VWidgetDetails::VWidgetDetails(VContainer *data, VAbstractPattern *doc, QWidget { ui->setupUi(this); + ui->checkBoxHideNotInLayout->setChecked(false); + FillTable(m_data->DataPieces()); ui->tableWidget->setContextMenuPolicy(Qt::CustomContextMenu); @@ -201,6 +205,8 @@ void VWidgetDetails::ToggleSectionDetails(bool select) } } + + //--------------------------------------------------------------------------------------------------------------------- void VWidgetDetails::ShowContextMenu(const QPoint &pos) { @@ -279,3 +285,41 @@ void VWidgetDetails::ShowContextMenu(const QPoint &pos) qApp->getUndoStack()->endMacro(); } } + +//------------------------------------------------------------------------------------------------------------------ +/** + * @brief + * enable "in layout" details visible or "not in layout" hidden + */ +void VWidgetDetails::on_checkBoxHideNotInLayout_stateChanged() +{ + //all details that were created and now they are in DocWidget + const QHash *allDetails = m_data->DataPieces(); + //enable slot if shedule of details is not empty + if (not allDetails->isEmpty()) + {//search the checked in layout items and make its visible or are not in layout make hidden once + for (int i = 0; i < ui->tableWidget->rowCount(); ++i) + { + QTableWidgetItem *item = ui->tableWidget->item(i, 0); + const quint32 id = item->data(Qt::UserRole).toUInt(); + if (item != nullptr) + { + VToolSeamAllowance *tool = qobject_cast(VAbstractPattern::getTool(id)); + if (tool != nullptr) + { + if (ui->checkBoxHideNotInLayout->isChecked()) + { + (allDetails->value(id).IsInLayout())? tool->setVisible(true) + : tool->setVisible(false); + } + else + { + tool->setVisible(true); + } + } + } + } + } +} + + diff --git a/src/app/valentina/dialogs/vwidgetdetails.h b/src/app/valentina/dialogs/vwidgetdetails.h index 65c405f31..beb6d3076 100644 --- a/src/app/valentina/dialogs/vwidgetdetails.h +++ b/src/app/valentina/dialogs/vwidgetdetails.h @@ -34,6 +34,7 @@ class VAbstractPattern; class VContainer; class VPiece; +class VWidgetGroups; namespace Ui { @@ -60,6 +61,8 @@ private slots: void InLayoutStateChanged(int row, int column); void ShowContextMenu(const QPoint &pos); + void on_checkBoxHideNotInLayout_stateChanged(); + private: Q_DISABLE_COPY(VWidgetDetails) Ui::VWidgetDetails *ui; diff --git a/src/app/valentina/dialogs/vwidgetdetails.ui b/src/app/valentina/dialogs/vwidgetdetails.ui index fb6fc341a..dbee6c673 100644 --- a/src/app/valentina/dialogs/vwidgetdetails.ui +++ b/src/app/valentina/dialogs/vwidgetdetails.ui @@ -14,6 +14,19 @@ Form + + + + + + + 1 + + + Hide not in layout + + +