/* === This file is part of Calamares - <https://calamares.io> ===
 *
 *   SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac <teo@kde.org>
 *   SPDX-License-Identifier: GPL-3.0-or-later
 *
 *   Calamares is Free Software: see the License-Identifier above.
 *
 */

#include "BootInfoWidget.h"
#include "core/PartUtils.h"

#include "utils/Gui.h"
#include "utils/QtCompat.h"
#include "utils/Retranslator.h"

#include <QDir>
#include <QHBoxLayout>
#include <QLabel>

BootInfoWidget::BootInfoWidget( QWidget* parent )
    : QWidget( parent )
    , m_bootIcon( new QLabel )
    , m_bootLabel( new QLabel )
{
    m_bootIcon->setObjectName( "bootInfoIcon" );
    m_bootLabel->setObjectName( "bootInfoLabel" );
    QHBoxLayout* mainLayout = new QHBoxLayout;
    setLayout( mainLayout );

    Calamares::unmarginLayout( mainLayout );

    mainLayout->addWidget( m_bootIcon );
    mainLayout->addWidget( m_bootLabel );

    QSize iconSize = Calamares::defaultIconSize();

    m_bootIcon->setMargin( 0 );
    m_bootIcon->setFixedSize( iconSize );
    m_bootIcon->setPixmap( Calamares::defaultPixmap( Calamares::BootEnvironment, Calamares::Original, iconSize ) );

    QFontMetrics fm = QFontMetrics( QFont() );
    m_bootLabel->setMinimumWidth( fm.boundingRect( "BIOS" ).width() + Calamares::defaultFontHeight() / 2 );
    m_bootLabel->setAlignment( Qt::AlignCenter );

    QPalette palette;
    palette.setBrush( WindowText, QColor( "#4D4D4D" ) );  //dark grey

    m_bootIcon->setAutoFillBackground( true );
    m_bootLabel->setAutoFillBackground( true );
    m_bootIcon->setPalette( palette );
    m_bootLabel->setPalette( palette );

    CALAMARES_RETRANSLATE( retranslateUi(); );
}

void
BootInfoWidget::retranslateUi()
{
    m_bootIcon->setToolTip( tr( "The <strong>boot environment</strong> of this system.<br><br>"
                                "Older x86 systems only support <strong>BIOS</strong>.<br>"
                                "Modern systems usually use <strong>EFI</strong>, but "
                                "may also show up as BIOS if started in compatibility "
                                "mode." ) );

    QString bootToolTip;
    if ( PartUtils::isEfiSystem() )
    {
        m_bootLabel->setText( "EFI " );
        bootToolTip = tr( "This system was started with an <strong>EFI</strong> "
                          "boot environment.<br><br>"
                          "To configure startup from an EFI environment, this installer "
                          "must deploy a boot loader application, like <strong>GRUB"
                          "</strong> or <strong>systemd-boot</strong> on an <strong>"
                          "EFI System Partition</strong>. This is automatic, unless "
                          "you choose manual partitioning, in which case you must "
                          "choose it or create it on your own." );
    }
    else
    {
        m_bootLabel->setText( "BIOS" );
        bootToolTip = tr( "This system was started with a <strong>BIOS</strong> "
                          "boot environment.<br><br>"
                          "To configure startup from a BIOS environment, this installer "
                          "must install a boot loader, like <strong>GRUB"
                          "</strong>, either at the beginning of a partition or "
                          "on the <strong>Master Boot Record</strong> near the "
                          "beginning of the partition table (preferred). "
                          "This is automatic, unless "
                          "you choose manual partitioning, in which case you must "
                          "set it up on your own." );
    }
    m_bootLabel->setToolTip( bootToolTip );
}
