diff --git a/src/calamares/CalamaresWindow.cpp b/src/calamares/CalamaresWindow.cpp index 16210b61d..9cf67e722 100644 --- a/src/calamares/CalamaresWindow.cpp +++ b/src/calamares/CalamaresWindow.cpp @@ -55,6 +55,19 @@ windowDimensionToPixels( const Calamares::Branding::WindowDimension& u ) return 0; } +/** @brief Expected orientation of the panels, based on their side + * + * Panels on the left and right are expected to be "vertical" style, + * top and bottom should be "horizontal bars". This function maps + * the sides to expected orientation. + */ +static inline Qt::Orientation +orientation( const Calamares::Branding::PanelSide s ) +{ + using Side = Calamares::Branding::PanelSide; + return ( s == Side::Left || s == Side::Right ) ? Qt::Orientation::Vertical : Qt::Orientation::Horizontal; +} + /** @brief Get a button-sized icon. */ static inline QPixmap getButtonIcon( const QString& name ) @@ -73,7 +86,11 @@ setButtonIcon( QPushButton* button, const QString& name ) } static QWidget* -getWidgetSidebar( CalamaresWindow* window, Calamares::ViewManager* viewManager, QWidget* parent, int desiredWidth ) +getWidgetSidebar( CalamaresWindow* window, + Calamares::ViewManager* viewManager, + QWidget* parent, + Qt::Orientation, + int desiredWidth ) { const Calamares::Branding* const branding = Calamares::Branding::instance(); @@ -130,7 +147,7 @@ getWidgetSidebar( CalamaresWindow* window, Calamares::ViewManager* viewManager, } static QWidget* -getWidgetNavigation( CalamaresWindow*, Calamares::ViewManager* viewManager, QWidget* parent ) +getWidgetNavigation( CalamaresWindow*, Calamares::ViewManager* viewManager, QWidget* parent, Qt::Orientation, int ) { QWidget* navigation = new QWidget( parent ); QBoxLayout* bottomLayout = new QHBoxLayout; @@ -193,7 +210,7 @@ getWidgetNavigation( CalamaresWindow*, Calamares::ViewManager* viewManager, QWid #ifdef WITH_QML static QWidget* -getQmlSidebar( CalamaresWindow*, Calamares::ViewManager*, QWidget* parent, int desiredWidth ) +getQmlSidebar( CalamaresWindow*, Calamares::ViewManager*, QWidget* parent, Qt::Orientation, int desiredWidth ) { CalamaresUtils::registerQmlModels(); QQuickWidget* w = new QQuickWidget( parent ); @@ -206,7 +223,7 @@ getQmlSidebar( CalamaresWindow*, Calamares::ViewManager*, QWidget* parent, int d } static QWidget* -getQmlNavigation( CalamaresWindow*, Calamares::ViewManager*, QWidget* parent ) +getQmlNavigation( CalamaresWindow*, Calamares::ViewManager*, QWidget* parent, Qt::Orientation, int ) { CalamaresUtils::registerQmlModels(); QQuickWidget* w = new QQuickWidget( parent ); @@ -232,12 +249,12 @@ getQmlNavigation( CalamaresWindow*, Calamares::ViewManager*, QWidget* parent ) // Calls to flavoredWidget() still refer to these *names* // even if they are subsequently not used. static QWidget* -getQmlSidebar( CalamaresWindow*, Calamares::ViewManager*, QWidget* parent, int desiredWidth ) +getQmlSidebar( CalamaresWindow*, Calamares::ViewManager*, QWidget* parent, Qt::Orientation, int desiredWidth ) { return nullptr; } static QWidget* -getQmlNavigation( CalamaresWindow*, Calamares::ViewManager*, QWidget* parent ) +getQmlNavigation( CalamaresWindow*, Calamares::ViewManager*, QWidget* parent, Qt::Orientation, int desiredWidth ) { return nullptr; } @@ -251,6 +268,7 @@ getQmlNavigation( CalamaresWindow*, Calamares::ViewManager*, QWidget* parent ) template < typename widgetMaker, typename... args > QWidget* flavoredWidget( Calamares::Branding::PanelFlavor flavor, + Qt::Orientation o, CalamaresWindow* w, QWidget* parent, widgetMaker widget, @@ -264,10 +282,10 @@ flavoredWidget( Calamares::Branding::PanelFlavor flavor, switch ( flavor ) { case Calamares::Branding::PanelFlavor::Widget: - return widget( w, viewManager, parent, a... ); + return widget( w, viewManager, parent, o, a... ); #ifdef WITH_QML case Calamares::Branding::PanelFlavor::Qml: - return qml( w, viewManager, parent, a... ); + return qml( w, viewManager, parent, o, a... ); #endif case Calamares::Branding::PanelFlavor::None: return nullptr; @@ -369,13 +387,19 @@ CalamaresWindow::CalamaresWindow( QWidget* parent ) QWidget* sideBox = flavoredWidget( branding->sidebarFlavor(), + ::orientation( branding->sidebarSide() ), this, baseWidget, ::getWidgetSidebar, ::getQmlSidebar, qBound( 100, CalamaresUtils::defaultFontHeight() * 12, w < windowPreferredWidth ? 100 : 190 ) ); - QWidget* navigation - = flavoredWidget( branding->navigationFlavor(), this, baseWidget, ::getWidgetNavigation, ::getQmlNavigation ); + QWidget* navigation = flavoredWidget( branding->navigationFlavor(), + ::orientation( branding->sidebarSide() ), + this, + baseWidget, + ::getWidgetNavigation, + ::getQmlNavigation, + 64 ); // Build up the contentsLayout (a VBox) top-to-bottom // .. note that the bottom is mirrored wrt. the top