diff --git a/src/modules/prepare/PrepareCheckWidget.cpp b/src/modules/prepare/PrepareCheckWidget.cpp index 59686241f..cabc5dfce 100644 --- a/src/modules/prepare/PrepareCheckWidget.cpp +++ b/src/modules/prepare/PrepareCheckWidget.cpp @@ -33,6 +33,7 @@ PrepareCheckWidget::PrepareCheckWidget( const QString &text, m_iconLabel = new QLabel( this ); mainLayout->addWidget( m_iconLabel ); + m_iconLabel->setFixedSize( CalamaresUtils::defaultIconSize() ); m_textLabel = new QLabel( text, this ); mainLayout->addWidget( m_textLabel ); m_textLabel->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred ); diff --git a/src/modules/prepare/PreparePage.cpp b/src/modules/prepare/PreparePage.cpp index b07029bec..7d76b849a 100644 --- a/src/modules/prepare/PreparePage.cpp +++ b/src/modules/prepare/PreparePage.cpp @@ -35,6 +35,7 @@ PreparePage::PreparePage( QWidget* parent ) QLabel* text = new QLabel( tr( "For best results, please ensure that this " "computer:" ), this ); + mainLayout->addSpacing( CalamaresUtils::defaultFontHeight() ); mainLayout->addWidget( text ); QHBoxLayout* spacerLayout = new QHBoxLayout; mainLayout->addLayout( spacerLayout ); @@ -49,10 +50,59 @@ PreparePage::PreparePage( QWidget* parent ) void PreparePage::init( const QList< PrepareEntry >& checkEntries ) { + bool allChecked = true; + bool requirementsSatisfied = true; + for ( const PrepareEntry& entry : checkEntries ) { PrepareCheckWidget* pcw = new PrepareCheckWidget( entry.text, entry.checked ); m_entriesLayout->addWidget( pcw ); pcw->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred ); + + if ( !entry.checked ) + { + allChecked = false; + if ( entry.required ) + { + requirementsSatisfied = false; + } + } + } + + if ( !allChecked ) + { + QBoxLayout* mainLayout = dynamic_cast< QBoxLayout* >( layout() ); + QBoxLayout* infoLayout = new QHBoxLayout; + QLabel* iconLabel = new QLabel; + QLabel* textLabel = new QLabel; + int iconSize = qBound( 32, CalamaresUtils::defaultFontHeight() * 6, 128 ); + iconLabel->setFixedSize( iconSize, iconSize ); + textLabel->setWordWrap( true ); + infoLayout->addWidget( iconLabel ); + infoLayout->addWidget( textLabel ); + textLabel->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred ); + + if ( !requirementsSatisfied ) + { + iconLabel->setPixmap( CalamaresUtils::defaultPixmap( CalamaresUtils::Fail, + CalamaresUtils::Original, + iconLabel->size() ) ); + textLabel->setText( tr( "This computer does not satisfy the minimum " + "requirements for installing %1.\n" + "Installation cannot continue." ).arg( "$RELEASE_NAME" ) ); //TODO: fill this with text from branding system + } + else + { + iconLabel->setPixmap( CalamaresUtils::defaultPixmap( CalamaresUtils::Information, + CalamaresUtils::Original, + iconLabel->size() ) ); + textLabel->setText( tr( "This computer does not satisfy some of the " + "recommended requirements for installing %1.\n" + "Installation can continue, but some features " + "might be disabled." ).arg( "$RELEASE_NAME" ) ); //TODO: fill this with text from branding system + + } + + mainLayout->insertLayout( mainLayout->count(), infoLayout ); } }