Refactor code for feature "Hide not in layout".
--HG-- branch : develop
This commit is contained in:
parent
4d54c0c44c
commit
074398c0c0
|
@ -28,7 +28,6 @@
|
||||||
|
|
||||||
#include "vwidgetdetails.h"
|
#include "vwidgetdetails.h"
|
||||||
#include "ui_vwidgetdetails.h"
|
#include "ui_vwidgetdetails.h"
|
||||||
#include "vwidgetdetails.h"
|
|
||||||
#include "../ifc/xml/vabstractpattern.h"
|
#include "../ifc/xml/vabstractpattern.h"
|
||||||
#include "../vpatterndb/vcontainer.h"
|
#include "../vpatterndb/vcontainer.h"
|
||||||
#include "../vmisc/vabstractapplication.h"
|
#include "../vmisc/vabstractapplication.h"
|
||||||
|
@ -88,19 +87,14 @@ void VWidgetDetails::SelectDetail(quint32 id)
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void VWidgetDetails::ToggledPiece(quint32 id)
|
void VWidgetDetails::ToggledPiece(quint32 id)
|
||||||
{
|
{
|
||||||
const QHash<quint32, VPiece> *details = m_data->DataPieces();
|
|
||||||
const int rowCount = ui->tableWidget->rowCount();
|
const int rowCount = ui->tableWidget->rowCount();
|
||||||
for (int row = 0; row < rowCount; ++row)
|
for (int row = 0; row < rowCount; ++row)
|
||||||
{
|
{
|
||||||
QTableWidgetItem *item = ui->tableWidget->item(row, 0);
|
QTableWidgetItem *item = ui->tableWidget->item(row, 0);
|
||||||
|
|
||||||
if (item->data(Qt::UserRole).toUInt() == id)
|
if (item && item->data(Qt::UserRole).toUInt() == id)
|
||||||
{
|
{
|
||||||
if (details->contains(id))
|
ToggledPieceItem(item);
|
||||||
{
|
|
||||||
details->value(id).IsInLayout() ? item->setIcon(QIcon("://icon/16x16/allow_detail.png")) :
|
|
||||||
item->setIcon(QIcon("://icon/16x16/forbid_detail.png"));
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -205,7 +199,33 @@ void VWidgetDetails::ToggleSectionDetails(bool select)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void VWidgetDetails::ToggledPieceItem(QTableWidgetItem *item)
|
||||||
|
{
|
||||||
|
SCASSERT(item != nullptr)
|
||||||
|
|
||||||
|
quint32 id = item->data(Qt::UserRole).toUInt();
|
||||||
|
const QHash<quint32, VPiece> *details = m_data->DataPieces();
|
||||||
|
|
||||||
|
if (details->contains(id))
|
||||||
|
{
|
||||||
|
const bool inLayout = details->value(id).IsInLayout();
|
||||||
|
inLayout ? item->setIcon(QIcon("://icon/16x16/allow_detail.png"))
|
||||||
|
: item->setIcon(QIcon("://icon/16x16/forbid_detail.png"));
|
||||||
|
|
||||||
|
VToolSeamAllowance *tool = nullptr;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
tool = qobject_cast<VToolSeamAllowance*>(VAbstractPattern::getTool(id));
|
||||||
|
}
|
||||||
|
catch (VExceptionBadId &)
|
||||||
|
{
|
||||||
|
// do nothing
|
||||||
|
}
|
||||||
|
|
||||||
|
tool->setVisible(ui->checkBoxHideNotInLayout->isChecked() ? inLayout : true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void VWidgetDetails::ShowContextMenu(const QPoint &pos)
|
void VWidgetDetails::ShowContextMenu(const QPoint &pos)
|
||||||
|
@ -293,33 +313,11 @@ void VWidgetDetails::ShowContextMenu(const QPoint &pos)
|
||||||
*/
|
*/
|
||||||
void VWidgetDetails::on_checkBoxHideNotInLayout_stateChanged()
|
void VWidgetDetails::on_checkBoxHideNotInLayout_stateChanged()
|
||||||
{
|
{
|
||||||
//all details that were created and now they are in DocWidget
|
|
||||||
const QHash<quint32, VPiece> *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)
|
for (int i = 0; i < ui->tableWidget->rowCount(); ++i)
|
||||||
{
|
{
|
||||||
QTableWidgetItem *item = ui->tableWidget->item(i, 0);
|
if (QTableWidgetItem *item = ui->tableWidget->item(i, 0))
|
||||||
const quint32 id = item->data(Qt::UserRole).toUInt();
|
|
||||||
if (item != nullptr)
|
|
||||||
{
|
{
|
||||||
VToolSeamAllowance *tool = qobject_cast<VToolSeamAllowance*>(VAbstractPattern::getTool(id));
|
ToggledPieceItem(item);
|
||||||
if (tool != nullptr)
|
|
||||||
{
|
|
||||||
if (ui->checkBoxHideNotInLayout->isChecked())
|
|
||||||
{
|
|
||||||
(allDetails->value(id).IsInLayout())? tool->setVisible(true)
|
|
||||||
: tool->setVisible(false);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
tool->setVisible(true);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@
|
||||||
class VAbstractPattern;
|
class VAbstractPattern;
|
||||||
class VContainer;
|
class VContainer;
|
||||||
class VPiece;
|
class VPiece;
|
||||||
class VWidgetGroups;
|
class QTableWidgetItem;
|
||||||
|
|
||||||
namespace Ui
|
namespace Ui
|
||||||
{
|
{
|
||||||
|
@ -71,6 +71,7 @@ private:
|
||||||
|
|
||||||
void FillTable(const QHash<quint32, VPiece> *details);
|
void FillTable(const QHash<quint32, VPiece> *details);
|
||||||
void ToggleSectionDetails(bool select);
|
void ToggleSectionDetails(bool select);
|
||||||
|
void ToggledPieceItem(QTableWidgetItem *item);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // VWIDGETDETAILS_H
|
#endif // VWIDGETDETAILS_H
|
||||||
|
|
Loading…
Reference in New Issue
Block a user