Refactored InsightWindow class to inherit from QMainWindow, as opposed to a standard QObject
Replaced QWidget left panel with new PanelWidget instance Also introduced a bottom panel (empty ATM) Removed obsolete widgets Added panel size adjustment on window resize
This commit is contained in:
@@ -1,30 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include <QWidget>
|
||||
#include <QSize>
|
||||
|
||||
namespace Bloom::Widgets
|
||||
{
|
||||
class Q_WIDGETS_EXPORT ExpandingWidget: public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
protected:
|
||||
[[nodiscard]] QSize minimumSizeHint() const override {
|
||||
auto parentWidget = this->parentWidget();
|
||||
|
||||
if (parentWidget != nullptr) {
|
||||
return parentWidget->size();
|
||||
}
|
||||
|
||||
return QWidget::size();
|
||||
};
|
||||
|
||||
[[nodiscard]] QSize sizeHint() const override {
|
||||
return this->minimumSizeHint();
|
||||
};
|
||||
|
||||
public:
|
||||
explicit ExpandingWidget(QWidget* parent): QWidget(parent) {};
|
||||
|
||||
};
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
#include "SlidingHandleWidget.hpp"
|
||||
|
||||
#include <QPainter>
|
||||
|
||||
using namespace Bloom::Widgets;
|
||||
|
||||
void SlidingHandleWidget::mouseMoveEvent(QMouseEvent* event) {
|
||||
emit this->horizontalSlide(event->pos().x());
|
||||
}
|
||||
|
||||
void SlidingHandleWidget::enterEvent(QEnterEvent* event) {
|
||||
this->setCursor(Qt::SplitHCursor);
|
||||
}
|
||||
|
||||
void SlidingHandleWidget::leaveEvent(QEvent* event) {
|
||||
this->setCursor(Qt::ArrowCursor);
|
||||
}
|
||||
@@ -1,47 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include <QFrame>
|
||||
#include <QSize>
|
||||
#include <QEvent>
|
||||
#include <QMouseEvent>
|
||||
#include <QEnterEvent>
|
||||
|
||||
namespace Bloom::Widgets
|
||||
{
|
||||
class Q_WIDGETS_EXPORT SlidingHandleWidget: public QFrame
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PROPERTY(int handleWidth READ getHandleWidth WRITE setHandleWidth DESIGNABLE true)
|
||||
|
||||
protected:
|
||||
int handleWidth = 10;
|
||||
|
||||
void mouseMoveEvent(QMouseEvent* event) override;
|
||||
void enterEvent(QEnterEvent* event) override;
|
||||
void leaveEvent(QEvent* event) override;
|
||||
|
||||
public:
|
||||
explicit SlidingHandleWidget(QWidget* parent): QFrame(parent) {};
|
||||
|
||||
QSize minimumSizeHint() const override {
|
||||
return QSize(this->handleWidth, this->parentWidget()->height());
|
||||
};
|
||||
|
||||
QSize sizeHint() const override {
|
||||
return QSize(this->handleWidth, this->parentWidget()->height());
|
||||
};
|
||||
|
||||
void setHandleWidth(int handleWidth) {
|
||||
this->handleWidth = handleWidth;
|
||||
this->setFixedWidth(handleWidth);
|
||||
}
|
||||
|
||||
int getHandleWidth() {
|
||||
return this->handleWidth;
|
||||
}
|
||||
|
||||
signals:
|
||||
void horizontalSlide(int position);
|
||||
|
||||
};
|
||||
}
|
||||
@@ -32,6 +32,9 @@
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::Fixed</enum>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item alignment="Qt::AlignLeft">
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
#include "TargetRegistersPaneWidget.hpp"
|
||||
|
||||
#include <QVBoxLayout>
|
||||
#include <QScrollArea>
|
||||
#include <set>
|
||||
|
||||
#include "../../UiLoader.hpp"
|
||||
#include "../ExpandingWidget.hpp"
|
||||
#include "RegisterGroupWidget.hpp"
|
||||
#include "RegisterWidget.hpp"
|
||||
|
||||
@@ -25,7 +23,7 @@ using Bloom::Targets::TargetRegisterType;
|
||||
TargetRegistersPaneWidget::TargetRegistersPaneWidget(
|
||||
const TargetDescriptor& targetDescriptor,
|
||||
InsightWorker& insightWorker,
|
||||
QWidget* parent
|
||||
PanelWidget* parent
|
||||
): QWidget(parent), parent(parent), targetDescriptor(targetDescriptor), insightWorker(insightWorker) {
|
||||
this->setObjectName("target-registers-side-pane");
|
||||
|
||||
@@ -65,6 +63,8 @@ TargetRegistersPaneWidget::TargetRegistersPaneWidget(
|
||||
this->filterRegisters(this->searchInput->text());
|
||||
});
|
||||
|
||||
this->itemScrollArea = this->container->findChild<QScrollArea*>("item-scroll-area");
|
||||
|
||||
this->itemContainer = this->container->findChild<QWidget*>("item-container");
|
||||
auto itemLayout = this->itemContainer->findChild<QVBoxLayout*>();
|
||||
|
||||
@@ -124,12 +124,19 @@ TargetRegistersPaneWidget::TargetRegistersPaneWidget(
|
||||
}
|
||||
|
||||
void TargetRegistersPaneWidget::resizeEvent(QResizeEvent* event) {
|
||||
auto parentSize = this->parent->size();
|
||||
this->container->setFixedSize(
|
||||
parentSize.width() - 1,
|
||||
parentSize.height()
|
||||
const auto parentSize = this->parent->size();
|
||||
const auto width = parentSize.width() - 1;
|
||||
this->container->setFixedSize(width, parentSize.height());
|
||||
this->searchInput->setFixedWidth(width - 20);
|
||||
|
||||
/*
|
||||
* In order to avoid the panel resize handle overlapping the scroll bar handle, we reduce the size of
|
||||
* the scroll area.
|
||||
*/
|
||||
this->itemScrollArea->setFixedSize(
|
||||
width - this->parent->getHandleSize(),
|
||||
parentSize.height() - this->toolBar->height() - this->searchInput->height() - 5
|
||||
);
|
||||
this->searchInput->setFixedWidth(parentSize.width() - 20);
|
||||
}
|
||||
|
||||
void TargetRegistersPaneWidget::postActivate() {
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
#include <QWidget>
|
||||
#include <QLineEdit>
|
||||
#include <QScrollArea>
|
||||
#include <set>
|
||||
#include <QSize>
|
||||
#include <QString>
|
||||
@@ -9,7 +10,8 @@
|
||||
#include <optional>
|
||||
|
||||
#include "ItemWidget.hpp"
|
||||
#include "../SvgToolButton.hpp"
|
||||
#include "src/Insight/UserInterfaces/InsightWindow/Widgets/PanelWidget.hpp"
|
||||
#include "src/Insight/UserInterfaces/InsightWindow/Widgets/SvgToolButton.hpp"
|
||||
#include "src/Insight/InsightWorker/InsightWorker.hpp"
|
||||
#include "src/Targets/TargetState.hpp"
|
||||
#include "src/Targets/TargetDescriptor.hpp"
|
||||
@@ -25,7 +27,7 @@ namespace Bloom::Widgets
|
||||
const Targets::TargetDescriptor& targetDescriptor;
|
||||
InsightWorker& insightWorker;
|
||||
|
||||
QWidget* parent = nullptr;
|
||||
PanelWidget* parent = nullptr;
|
||||
QWidget* container = nullptr;
|
||||
|
||||
QWidget* toolBar = nullptr;
|
||||
@@ -33,6 +35,7 @@ namespace Bloom::Widgets
|
||||
SvgToolButton* expandAllButton = nullptr;
|
||||
|
||||
QLineEdit* searchInput = nullptr;
|
||||
QScrollArea* itemScrollArea = nullptr;
|
||||
QWidget* itemContainer = nullptr;
|
||||
|
||||
ItemWidget* selectedItemWidget = nullptr;
|
||||
@@ -58,7 +61,7 @@ namespace Bloom::Widgets
|
||||
TargetRegistersPaneWidget(
|
||||
const Targets::TargetDescriptor& targetDescriptor,
|
||||
InsightWorker& insightWorker,
|
||||
QWidget *parent
|
||||
PanelWidget *parent
|
||||
);
|
||||
|
||||
[[nodiscard]] QSize minimumSizeHint() const override {
|
||||
|
||||
@@ -13,6 +13,12 @@
|
||||
<property name="minimumHeight">
|
||||
<number>28</number>
|
||||
</property>
|
||||
<property name="maximumHeight">
|
||||
<number>28</number>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Fixed"/>
|
||||
</property>
|
||||
<layout class="QHBoxLayout">
|
||||
<property name="spacing">
|
||||
<number>3</number>
|
||||
@@ -61,6 +67,12 @@
|
||||
<property name="minimumHeight">
|
||||
<number>27</number>
|
||||
</property>
|
||||
<property name="maximumHeight">
|
||||
<number>27</number>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Fixed"/>
|
||||
</property>
|
||||
<layout class="QHBoxLayout">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
@@ -105,15 +117,13 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item alignment="Qt::AlignTop">
|
||||
<widget class="ExpandingHeightScrollAreaWidget" name="item-scroll-area">
|
||||
<widget class="QScrollArea" name="item-scroll-area">
|
||||
<property name="widgetResizable"><bool>true</bool></property>
|
||||
<property name="verticalScrollBarPolicy"><enum>Qt::ScrollBarAsNeeded</enum></property>
|
||||
<property name="sizeAdjustPolicy"><enum>QAbstractScrollArea::AdjustToContents</enum></property>
|
||||
<property name="horizontalScrollBarPolicy"><enum>Qt::ScrollBarAlwaysOff</enum></property>
|
||||
<property name="sizePolicy"><enum>QSizePolicy::SetMinAndMaxSize</enum></property>
|
||||
|
||||
<widget class="QWidget" name="item-container">
|
||||
|
||||
<layout class="QVBoxLayout">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
@@ -129,6 +139,13 @@
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
<item alignment="Qt::AlignTop">
|
||||
<spacer name="vertical-spacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</ui>
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
#include "TargetPackageWidgetContainer.hpp"
|
||||
|
||||
#include <QLayout>
|
||||
|
||||
using namespace Bloom;
|
||||
using namespace Bloom::Widgets::InsightTargetWidgets;
|
||||
|
||||
@@ -23,4 +25,8 @@ void TargetPackageWidgetContainer::resizeEvent(QResizeEvent* event) {
|
||||
|
||||
void TargetPackageWidgetContainer::setPackageWidget(TargetPackageWidget* packageWidget) {
|
||||
this->packageWidget = packageWidget;
|
||||
|
||||
if (packageWidget != nullptr) {
|
||||
this->layout()->addWidget(packageWidget);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user