diff --git a/src/libcalamaresui/CMakeLists.txt b/src/libcalamaresui/CMakeLists.txt index df36f3b0d..fad14b263 100644 --- a/src/libcalamaresui/CMakeLists.txt +++ b/src/libcalamaresui/CMakeLists.txt @@ -18,6 +18,7 @@ list( APPEND ${CALAMARESUI_LIBRARY_TARGET}_SOURCES viewpages/ViewStep.cpp widgets/ClickableLabel.cpp + widgets/FixedAspectRatioLabel.cpp widgets/QtWaitingSpinner.cpp widgets/WaitingWidget.cpp diff --git a/src/libcalamaresui/widgets/FixedAspectRatioLabel.cpp b/src/libcalamaresui/widgets/FixedAspectRatioLabel.cpp new file mode 100644 index 000000000..4920605bc --- /dev/null +++ b/src/libcalamaresui/widgets/FixedAspectRatioLabel.cpp @@ -0,0 +1,50 @@ +/* === This file is part of Calamares - === + * + * Copyright 2015, Teo Mrnjavac + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "FixedAspectRatioLabel.h" + + +FixedAspectRatioLabel::FixedAspectRatioLabel( QWidget* parent ) + : QLabel( parent ) +{} + + +FixedAspectRatioLabel::~FixedAspectRatioLabel() +{} + + +void +FixedAspectRatioLabel::setPixmap( const QPixmap& pixmap ) +{ + m_pixmap = pixmap; + QLabel::setPixmap( pixmap.scaled( + contentsRect().size(), + Qt::KeepAspectRatio, + Qt::SmoothTransformation ) ); +} + + +void +FixedAspectRatioLabel::resizeEvent( QResizeEvent* event ) +{ + QLabel::setPixmap( m_pixmap.scaled( + contentsRect().size(), + Qt::KeepAspectRatio, + Qt::SmoothTransformation ) ); +} + diff --git a/src/libcalamaresui/widgets/FixedAspectRatioLabel.h b/src/libcalamaresui/widgets/FixedAspectRatioLabel.h new file mode 100644 index 000000000..71fc6e9d3 --- /dev/null +++ b/src/libcalamaresui/widgets/FixedAspectRatioLabel.h @@ -0,0 +1,40 @@ +/* === This file is part of Calamares - === + * + * Copyright 2015, Teo Mrnjavac + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef FIXEDASPECTRATIOLABEL_H +#define FIXEDASPECTRATIOLABEL_H + +#include +#include + +class FixedAspectRatioLabel : public QLabel +{ + Q_OBJECT +public: + explicit FixedAspectRatioLabel( QWidget* parent = nullptr ); + virtual ~FixedAspectRatioLabel(); + +public slots: + virtual void setPixmap( const QPixmap &pixmap ); + void resizeEvent( QResizeEvent* event ) override; + +private: + QPixmap m_pixmap; +}; + +#endif // FIXEDASPECTRATIOLABEL_H