Tidying of the QFP target package widget

This commit is contained in:
Nav
2021-09-26 18:16:27 +01:00
parent 135df2395b
commit 4ced48737b
5 changed files with 33 additions and 95 deletions

View File

@@ -363,7 +363,6 @@ void InsightWindow::selectVariant(const TargetVariant* variant) {
} else if (variant->package == TargetPackage::QFP || variant->package == TargetPackage::QFN) { } else if (variant->package == TargetPackage::QFP || variant->package == TargetPackage::QFN) {
this->targetPackageWidget = new InsightTargetWidgets::Qfp::QuadFlatPackageWidget( this->targetPackageWidget = new InsightTargetWidgets::Qfp::QuadFlatPackageWidget(
*variant, *variant,
this,
this->insightWorker, this->insightWorker,
this->ioContainerWidget this->ioContainerWidget
); );

View File

@@ -23,13 +23,13 @@ void BodyWidget::drawWidget(QPainter& painter) {
painter.setPen(Qt::PenStyle::NoPen); painter.setPen(Qt::PenStyle::NoPen);
painter.setBrush(targetBodyColor); painter.setBrush(targetBodyColor);
auto containerGeometry = this->geometry(); const auto containerSize = this->size();
auto targetBodyWidth = containerGeometry.width() - 16; auto targetBodyWidth = containerSize.width() - 16;
auto targetBodyHeight = containerGeometry.height() - 16; auto targetBodyHeight = containerSize.height() - 16;
auto targetBodyPoint = QPoint( auto targetBodyPoint = QPoint(
(containerGeometry.width() / 2) - (targetBodyWidth / 2), (containerSize.width() / 2) - (targetBodyWidth / 2),
(containerGeometry.height() / 2) - (targetBodyHeight / 2) (containerSize.height() / 2) - (targetBodyHeight / 2)
); );
painter.drawRect( painter.drawRect(

View File

@@ -29,7 +29,7 @@ namespace Bloom::Widgets::InsightTargetWidgets::Qfp
public: public:
static const int PIN_WIDGET_LAYOUT_PADDING = 46; static const int PIN_WIDGET_LAYOUT_PADDING = 46;
static const int PIN_WIDGET_SPACING = 8; static const int WIDTH_SPACING = 8;
static const int MAXIMUM_LABEL_COUNT = 3; static const int MAXIMUM_LABEL_COUNT = 3;
static const int LABEL_HEIGHT = 20; static const int LABEL_HEIGHT = 20;
static const int MAXIMUM_LABEL_WIDTH = PinBodyWidget::WIDTH; static const int MAXIMUM_LABEL_WIDTH = PinBodyWidget::WIDTH;

View File

@@ -17,7 +17,6 @@ using namespace Bloom::Targets;
QuadFlatPackageWidget::QuadFlatPackageWidget( QuadFlatPackageWidget::QuadFlatPackageWidget(
const TargetVariant& targetVariant, const TargetVariant& targetVariant,
QObject* insightWindowObj,
InsightWorker& insightWorker, InsightWorker& insightWorker,
QWidget* parent QWidget* parent
): TargetPackageWidget(targetVariant, insightWorker, parent) { ): TargetPackageWidget(targetVariant, insightWorker, parent) {
@@ -41,25 +40,22 @@ QuadFlatPackageWidget::QuadFlatPackageWidget(
this->horizontalLayout->setDirection(QBoxLayout::Direction::LeftToRight); this->horizontalLayout->setDirection(QBoxLayout::Direction::LeftToRight);
this->topPinLayout = new QHBoxLayout(); this->topPinLayout = new QHBoxLayout();
this->topPinLayout->setSpacing(PinWidget::PIN_WIDGET_SPACING); this->topPinLayout->setSpacing(PinWidget::WIDTH_SPACING);
this->topPinLayout->setDirection(QBoxLayout::Direction::RightToLeft); this->topPinLayout->setDirection(QBoxLayout::Direction::RightToLeft);
this->rightPinLayout = new QVBoxLayout(); this->rightPinLayout = new QVBoxLayout();
this->rightPinLayout->setSpacing(PinWidget::PIN_WIDGET_SPACING); this->rightPinLayout->setSpacing(PinWidget::WIDTH_SPACING);
this->rightPinLayout->setDirection(QBoxLayout::Direction::BottomToTop); this->rightPinLayout->setDirection(QBoxLayout::Direction::BottomToTop);
this->bottomPinLayout = new QHBoxLayout(); this->bottomPinLayout = new QHBoxLayout();
this->bottomPinLayout->setSpacing(PinWidget::PIN_WIDGET_SPACING); this->bottomPinLayout->setSpacing(PinWidget::WIDTH_SPACING);
this->bottomPinLayout->setDirection(QBoxLayout::Direction::LeftToRight); this->bottomPinLayout->setDirection(QBoxLayout::Direction::LeftToRight);
this->leftPinLayout = new QVBoxLayout(); this->leftPinLayout = new QVBoxLayout();
this->leftPinLayout->setSpacing(PinWidget::PIN_WIDGET_SPACING); this->leftPinLayout->setSpacing(PinWidget::WIDTH_SPACING);
this->leftPinLayout->setDirection(QBoxLayout::Direction::TopToBottom); this->leftPinLayout->setDirection(QBoxLayout::Direction::TopToBottom);
auto insightWindow = qobject_cast<InsightWindow*>(insightWindowObj); const auto pinCountPerLayout = static_cast<int>(targetVariant.pinDescriptorsByNumber.size() / 4);
assert(insightWindow != nullptr);
auto pinCountPerLayout = (targetVariant.pinDescriptorsByNumber.size() / 4);
for (const auto& [targetPinNumber, targetPinDescriptor]: targetVariant.pinDescriptorsByNumber) { for (const auto& [targetPinNumber, targetPinDescriptor]: targetVariant.pinDescriptorsByNumber) {
auto pinWidget = new PinWidget(targetPinDescriptor, targetVariant, insightWorker, this); auto pinWidget = new PinWidget(targetPinDescriptor, targetVariant, insightWorker, this);
this->pinWidgets.push_back(pinWidget); this->pinWidgets.push_back(pinWidget);
@@ -87,70 +83,30 @@ QuadFlatPackageWidget::QuadFlatPackageWidget(
this->layout->addLayout(this->bottomPinLayout); this->layout->addLayout(this->bottomPinLayout);
this->setLayout(this->layout); this->setLayout(this->layout);
auto insightWindowWidget = this->window(); // Layout sizing, positioning and padding
assert(insightWindowWidget != nullptr); const auto verticalPinWidgetHeight = PinWidget::MAXIMUM_VERTICAL_HEIGHT;
const auto verticalPinWidgetWidth = PinWidget::MAXIMUM_VERTICAL_WIDTH;
insightWindowWidget->setMinimumHeight( const auto horizontalPinWidgetHeight = PinWidget::MAXIMUM_HORIZONTAL_HEIGHT;
std::max( const auto horizontalPinWidgetWidth = PinWidget::MAXIMUM_HORIZONTAL_WIDTH;
500,
static_cast<int>((PinWidget::MAXIMUM_HORIZONTAL_HEIGHT * pinCountPerLayout)
+ (PinWidget::MAXIMUM_VERTICAL_HEIGHT * 2)) + 300
)
);
insightWindowWidget->setMinimumWidth(
std::max(
1000,
static_cast<int>(((PinWidget::MAXIMUM_VERTICAL_WIDTH + PinWidget::PIN_WIDGET_SPACING) * pinCountPerLayout)
+ (PinWidget::MAXIMUM_VERTICAL_WIDTH * 2)) + 760
)
);
}
void QuadFlatPackageWidget::paintEvent(QPaintEvent* event) {
auto painter = QPainter(this);
this->drawWidget(painter);
}
void QuadFlatPackageWidget::drawWidget(QPainter& painter) {
auto parentWidget = this->parentWidget();
assert(parentWidget != nullptr);
auto parentContainerHeight = parentWidget->height();
auto parentContainerWidth = parentWidget->width();
auto verticalPinWidgetHeight = PinWidget::MAXIMUM_VERTICAL_HEIGHT;
auto verticalPinWidgetWidth = PinWidget::MAXIMUM_VERTICAL_WIDTH;
auto horizontalPinWidgetHeight = PinWidget::MAXIMUM_HORIZONTAL_HEIGHT;
auto horizontalPinWidgetWidth = PinWidget::MAXIMUM_HORIZONTAL_WIDTH;
auto pinCountPerLayout = static_cast<int>(this->pinWidgets.size() / 4);
/* /*
* Horizontal layouts are the right and left pin layouts - the ones that hold horizontal pin widgets. * Horizontal layouts are the right and left pin layouts - the ones that hold horizontal pin widgets.
* The bottom and top layouts are vertical layouts, as they hold the vertical pin widgets. * The bottom and top layouts are vertical layouts, as they hold the vertical pin widgets.
*/ */
auto horizontalLayoutHeight = ((horizontalPinWidgetHeight + PinWidget::PIN_WIDGET_SPACING) * pinCountPerLayout const auto horizontalLayoutHeight = ((horizontalPinWidgetHeight + PinWidget::WIDTH_SPACING) * pinCountPerLayout
+ PinWidget::PIN_WIDGET_LAYOUT_PADDING - PinWidget::PIN_WIDGET_SPACING); + PinWidget::PIN_WIDGET_LAYOUT_PADDING - PinWidget::WIDTH_SPACING);
auto verticalLayoutWidth = ((verticalPinWidgetWidth + PinWidget::PIN_WIDGET_SPACING) * pinCountPerLayout const auto verticalLayoutWidth = ((verticalPinWidgetWidth + PinWidget::WIDTH_SPACING) * pinCountPerLayout
+ PinWidget::PIN_WIDGET_LAYOUT_PADDING - PinWidget::PIN_WIDGET_SPACING); + PinWidget::PIN_WIDGET_LAYOUT_PADDING - PinWidget::WIDTH_SPACING);
auto containerWidth = verticalLayoutWidth + (horizontalPinWidgetWidth * 2); const auto width = verticalLayoutWidth + (horizontalPinWidgetWidth * 2);
const auto height = horizontalLayoutHeight + (verticalPinWidgetHeight * 2);
this->topPinLayout->setGeometry(QRect( this->topPinLayout->insertSpacing(0, horizontalPinWidgetWidth);
horizontalPinWidgetWidth, this->topPinLayout->addSpacing(horizontalPinWidgetWidth);
0,
verticalLayoutWidth,
verticalPinWidgetHeight
));
this->horizontalLayout->setGeometry(QRect( this->bottomPinLayout->insertSpacing(0, horizontalPinWidgetWidth);
0, this->bottomPinLayout->addSpacing(horizontalPinWidgetWidth);
verticalPinWidgetHeight,
containerWidth,
horizontalLayoutHeight
));
this->leftPinLayout->setGeometry(QRect( this->leftPinLayout->setGeometry(QRect(
0, 0,
@@ -159,12 +115,7 @@ void QuadFlatPackageWidget::drawWidget(QPainter& painter) {
horizontalLayoutHeight horizontalLayoutHeight
)); ));
this->bodyWidget->setGeometry(QRect( this->bodyWidget->setFixedSize(verticalLayoutWidth, horizontalLayoutHeight);
horizontalPinWidgetWidth,
verticalPinWidgetHeight,
horizontalLayoutHeight,
horizontalLayoutHeight
));
this->rightPinLayout->setGeometry(QRect( this->rightPinLayout->setGeometry(QRect(
horizontalLayoutHeight + horizontalPinWidgetWidth, horizontalLayoutHeight + horizontalPinWidgetWidth,
@@ -173,14 +124,7 @@ void QuadFlatPackageWidget::drawWidget(QPainter& painter) {
horizontalLayoutHeight horizontalLayoutHeight
)); ));
this->bottomPinLayout->setGeometry(QRect( const auto pinWidgetLayoutMargin = PinWidget::PIN_WIDGET_LAYOUT_PADDING / 2;
horizontalPinWidgetWidth,
verticalPinWidgetHeight + horizontalLayoutHeight,
verticalLayoutWidth,
verticalPinWidgetHeight
));
auto pinWidgetLayoutMargin = PinWidget::PIN_WIDGET_LAYOUT_PADDING / 2;
this->topPinLayout->setContentsMargins( this->topPinLayout->setContentsMargins(
pinWidgetLayoutMargin, pinWidgetLayoutMargin,
@@ -210,11 +154,11 @@ void QuadFlatPackageWidget::drawWidget(QPainter& painter) {
pinWidgetLayoutMargin pinWidgetLayoutMargin
); );
auto containerHeight = horizontalLayoutHeight + (verticalPinWidgetHeight * 2); // Set the fixed size and center the widget
this->setGeometry( this->setGeometry(
(parentContainerWidth / 2) - (containerWidth / 2), (parent->width() / 2) - (width / 2),
(parentContainerHeight / 2) - (containerHeight / 2), (parent->height() / 2) - (height / 2),
containerWidth, width,
containerHeight height
); );
} }

View File

@@ -27,14 +27,9 @@ namespace Bloom::Widgets::InsightTargetWidgets::Qfp
QVBoxLayout* leftPinLayout = nullptr; QVBoxLayout* leftPinLayout = nullptr;
BodyWidget* bodyWidget = nullptr; BodyWidget* bodyWidget = nullptr;
protected:
void paintEvent(QPaintEvent* event) override;
void drawWidget(QPainter& painter);
public: public:
QuadFlatPackageWidget( QuadFlatPackageWidget(
const Targets::TargetVariant& targetVariant, const Targets::TargetVariant& targetVariant,
QObject* insightWindowObj,
InsightWorker& insightWorker, InsightWorker& insightWorker,
QWidget* parent QWidget* parent
); );