[libcalamaresui] Add support for steps with own margins

main
Adriaan de Groot 5 years ago
parent 347a25d13d
commit 748d76df4f

@ -19,6 +19,9 @@
#include "ViewStep.h"
#include <QApplication>
#include <QStyle>
namespace Calamares
{
@ -85,4 +88,14 @@ ViewStep::checkRequirements()
return RequirementsList();
}
QSize
ViewStep::widgetMargins( Qt::Orientations panelSides )
{
Q_UNUSED( panelSides );
// Application's default style
const auto* s = QApplication::style();
return QSize( s->pixelMetric( QStyle::PM_LayoutLeftMargin ), s->pixelMetric( QStyle::PM_LayoutTopMargin ) );
}
} // namespace Calamares

@ -52,27 +52,61 @@ public:
explicit ViewStep( QObject* parent = nullptr );
virtual ~ViewStep() override;
/** @brief Human-readable name of the step
*
* This (translated) string is shown in the sidebar (progress)
* and during installation. There is no default.
*/
virtual QString prettyName() const = 0;
/**
/** @brief Describe what this step will do during install
*
* Optional. May return a non-empty string describing what this
* step is going to do (should be translated). This is also used
* in the summary page to describe what is going to be done.
* Return an empty string to provide no description.
*
* The default implementation returns an empty string, so nothing
* will be displayed for this step when a summary is shown.
*/
virtual QString prettyStatus() const;
/**
/** @brief Return a long description what this step will do during install
*
* Optional. May return a widget which will be inserted in the summary
* page. The caller takes ownership of the widget. Return nullptr to
* provide no widget. In general, this is only used for complicated
* steps where prettyStatus() is not sufficient.
*
* The default implementation returns nullptr, so nothing
* will be displayed for this step when a summary is shown.
*/
virtual QWidget* createSummaryWidget() const;
//TODO: we might want to make this a QSharedPointer
/** @brief Get (or create) the widget for this view step
*
* While a view step **may** create the widget when it is loaded,
* it is recommended to wait with widget creation until the
* widget is actually asked for: a view step **may** be used
* without a UI.
*/
virtual QWidget* widget() = 0;
/** @brief Get margins for this widget
*
* This is called by the layout manager to find the desired
* margins (width is used for left and right margin, height is
* used for top and bottom margins) for the widget. The
* @p panelSides indicates where there are panels in the overall
* layout: horizontally and / or vertically adjacent (or none!)
* to the view step's widget.
*
* Should return a size based also on QStyle metrics for layout.
* The default implementation just returns the default layout metrics
* (often 11 pixels on a side).
*/
virtual QSize widgetMargins( Qt::Orientations panelSides );
/**
* @brief Multi-page support, go next
*

Loading…
Cancel
Save