diff --git a/CMakeLists.txt b/CMakeLists.txt
index 74f62c770..750cf57e1 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -27,7 +27,7 @@ include( MacroLogFeature )
set( QT_VERSION 5.3.0 )
-find_package( Qt5 ${QT_VERSION} CONFIG REQUIRED Core Gui Widgets LinguistTools )
+find_package( Qt5 ${QT_VERSION} CONFIG REQUIRED Core Gui Widgets LinguistTools Svg )
find_package( YamlCpp 0.5.1 REQUIRED )
option( WITH_PYTHON "Enable Python modules support." ON )
diff --git a/CalamaresAddLibrary.cmake b/CalamaresAddLibrary.cmake
index 050c08a5d..a774b1f31 100644
--- a/CalamaresAddLibrary.cmake
+++ b/CalamaresAddLibrary.cmake
@@ -4,7 +4,7 @@ function(calamares_add_library)
# parse arguments (name needs to be saved before passing ARGN into the macro)
set(NAME ${ARGV0})
set(options NO_INSTALL NO_VERSION)
- set(oneValueArgs NAME TYPE EXPORT_MACRO TARGET TARGET_TYPE EXPORT VERSION SOVERSION INSTALL_BINDIR)
+ set(oneValueArgs NAME TYPE EXPORT_MACRO TARGET TARGET_TYPE EXPORT VERSION SOVERSION INSTALL_BINDIR RESOURCES)
set(multiValueArgs SOURCES UI LINK_LIBRARIES LINK_PRIVATE_LIBRARIES COMPILE_DEFINITIONS QT5_MODULES)
cmake_parse_arguments(LIBRARY "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
set(LIBRARY_NAME ${NAME})
@@ -30,8 +30,8 @@ function(calamares_add_library)
endif()
# add resources from current dir
- if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/resources.qrc")
- qt5_add_resources(LIBRARY_RC_SOURCES "resources.qrc")
+ if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/${LIBRARY_RESOURCES}")
+ qt5_add_resources(LIBRARY_RC_SOURCES "${LIBRARY_RESOURCES}")
list(APPEND LIBRARY_SOURCES ${LIBRARY_RC_SOURCES})
unset(LIBRARY_RC_SOURCES)
endif()
diff --git a/CalamaresAddPlugin.cmake b/CalamaresAddPlugin.cmake
index 63e63d009..e9d5607c9 100644
--- a/CalamaresAddPlugin.cmake
+++ b/CalamaresAddPlugin.cmake
@@ -5,7 +5,7 @@ function( calamares_add_plugin )
# parse arguments ( name needs to be saved before passing ARGN into the macro )
set( NAME ${ARGV0} )
set( options NO_INSTALL SHARED_LIB )
- set( oneValueArgs NAME TYPE EXPORT_MACRO )
+ set( oneValueArgs NAME TYPE EXPORT_MACRO RESOURCES )
set( multiValueArgs SOURCES UI LINK_LIBRARIES COMPILE_DEFINITIONS )
cmake_parse_arguments( PLUGIN "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
set( PLUGIN_NAME ${NAME} )
@@ -30,6 +30,9 @@ function( calamares_add_plugin )
if( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${PLUGIN_CONFIG_FILE}" )
message( " ${Green}CONFIGURATION_FILE:${ColorReset} ${PLUGIN_CONFIG_FILE} => ${PLUGIN_DATA_DESTINATION}" )
endif()
+ if( PLUGIN_RESOURCES )
+ message( " ${Green}RESOURCES:${ColorReset} ${PLUGIN_RESOURCES}" )
+ endif()
message( "" )
endif()
# create target name once for convenience
@@ -65,6 +68,10 @@ function( calamares_add_plugin )
list( APPEND calamares_add_library_args "INSTALL_BINDIR" "${PLUGIN_DESTINATION}" )
+ if( PLUGIN_RESOURCES )
+ list( APPEND calamares_add_library_args "RESOURCES" "${PLUGIN_RESOURCES}" )
+ endif()
+
calamares_add_library( ${calamares_add_library_args} )
configure_file( ${PLUGIN_DESC_FILE} ${PLUGIN_DESC_FILE} COPYONLY )
diff --git a/data/images/no.svgz b/data/images/no.svgz
new file mode 100644
index 000000000..423fdaca7
Binary files /dev/null and b/data/images/no.svgz differ
diff --git a/images/squid.png b/data/images/squid.png
similarity index 100%
rename from images/squid.png
rename to data/images/squid.png
diff --git a/images/squid.svg b/data/images/squid.svg
similarity index 100%
rename from images/squid.svg
rename to data/images/squid.svg
diff --git a/data/images/yes.svgz b/data/images/yes.svgz
new file mode 100644
index 000000000..a4a8f6c84
Binary files /dev/null and b/data/images/yes.svgz differ
diff --git a/src/libcalamares/utils/CalamaresUtils.h b/src/libcalamares/utils/CalamaresUtils.h
index c0839f96f..915b4c2a6 100644
--- a/src/libcalamares/utils/CalamaresUtils.h
+++ b/src/libcalamares/utils/CalamaresUtils.h
@@ -26,6 +26,8 @@
#include "DllMacro.h"
+#define RESPATH ":/data/"
+
class QDir;
class QObject;
diff --git a/src/libcalamaresui/CMakeLists.txt b/src/libcalamaresui/CMakeLists.txt
index 6ded069b0..357ee9712 100644
--- a/src/libcalamaresui/CMakeLists.txt
+++ b/src/libcalamaresui/CMakeLists.txt
@@ -7,6 +7,7 @@ list( APPEND ${CALAMARESUI_LIBRARY_TARGET}_SOURCES
modulesystem/ViewModule.cpp
utils/CalamaresUtilsGui.cpp
+ utils/ImageRegistry.cpp
utils/YamlUtils.cpp
viewpages/AbstractPage.cpp
@@ -35,6 +36,8 @@ calamares_add_library( ${CALAMARESUI_LIBRARY_TARGET}
EXPORT_MACRO UIDLLEXPORT_PRO
LINK_LIBRARIES
yaml-cpp
+ Qt5::Svg
+ RESOURCES libcalamaresui.qrc
EXPORT CalamaresLibraryDepends
VERSION ${CALAMARES_VERSION_SHORT}
)
diff --git a/src/libcalamaresui/libcalamaresui.qrc b/src/libcalamaresui/libcalamaresui.qrc
new file mode 100644
index 000000000..4bea23aeb
--- /dev/null
+++ b/src/libcalamaresui/libcalamaresui.qrc
@@ -0,0 +1,6 @@
+
+
+ ../../data/images/yes.svgz
+ ../../data/images/no.svgz
+
+
diff --git a/src/libcalamaresui/utils/CalamaresUtilsGui.cpp b/src/libcalamaresui/utils/CalamaresUtilsGui.cpp
index e43dc966c..747460261 100644
--- a/src/libcalamaresui/utils/CalamaresUtilsGui.cpp
+++ b/src/libcalamaresui/utils/CalamaresUtilsGui.cpp
@@ -18,9 +18,14 @@
#include "CalamaresUtilsGui.h"
+#include "ImageRegistry.h"
+
+#include
#include
#include
#include
+#include
+#include
namespace CalamaresUtils
{
@@ -29,6 +34,84 @@ static int s_defaultFontSize = 0;
static int s_defaultFontHeight = 0;
+
+QPixmap
+defaultPixmap( ImageType type, ImageMode mode, const QSize& size )
+{
+ QPixmap pixmap;
+
+ switch ( type )
+ {
+ case Yes:
+ pixmap = ImageRegistry::instance()->pixmap( RESPATH "images/yes.svgz", size );
+ break;
+
+ case No:
+ pixmap = ImageRegistry::instance()->pixmap( RESPATH "images/no.svgz", size );
+ break;
+
+ default:
+ break;
+ }
+
+ if ( pixmap.isNull() )
+ {
+ Q_ASSERT( false );
+ return QPixmap();
+ }
+
+ return pixmap;
+}
+
+
+QPixmap
+createRoundedImage( const QPixmap& pixmap, const QSize& size, float frameWidthPct )
+{
+ int height;
+ int width;
+
+ if ( !size.isEmpty() )
+ {
+ height = size.height();
+ width = size.width();
+ }
+ else
+ {
+ height = pixmap.height();
+ width = pixmap.width();
+ }
+
+ if ( !height || !width )
+ return QPixmap();
+
+ QPixmap scaledAvatar = pixmap.scaled( width, height, Qt::IgnoreAspectRatio, Qt::SmoothTransformation );
+ if ( frameWidthPct == 0.00 )
+ return scaledAvatar;
+
+ QPixmap frame( width, height );
+ frame.fill( Qt::transparent );
+
+ QPainter painter( &frame );
+ painter.setRenderHint( QPainter::Antialiasing );
+
+ QRect outerRect( 0, 0, width, height );
+ QBrush brush( scaledAvatar );
+ QPen pen;
+ pen.setColor( Qt::transparent );
+ pen.setJoinStyle( Qt::RoundJoin );
+
+ painter.setBrush( brush );
+ painter.setPen( pen );
+ painter.drawRoundedRect( outerRect, frameWidthPct * 100.0, frameWidthPct * 100.0, Qt::RelativeSize );
+
+/* painter.setBrush( Qt::transparent );
+ painter.setPen( Qt::white );
+ painter.drawRoundedRect( outerRect, frameWidthPct, frameWidthPct, Qt::RelativeSize ); */
+
+ return frame;
+}
+
+
void
unmarginLayout( QLayout* layout )
{
diff --git a/src/libcalamaresui/utils/CalamaresUtilsGui.h b/src/libcalamaresui/utils/CalamaresUtilsGui.h
index c835ddbf7..1a52bf305 100644
--- a/src/libcalamaresui/utils/CalamaresUtilsGui.h
+++ b/src/libcalamaresui/utils/CalamaresUtilsGui.h
@@ -22,19 +22,37 @@
#include "utils/CalamaresUtils.h"
#include "UiDllMacro.h"
+#include
#include
class QLayout;
namespace CalamaresUtils
{
+enum ImageType
+{
+ Yes,
+ No
+};
+
+enum ImageMode
+{
+ Original,
+ CoverInCase,
+ Grid,
+ DropShadow,
+ RoundedCorners
+};
+
+UIDLLEXPORT QPixmap defaultPixmap( ImageType type, ImageMode mode = CalamaresUtils::Original, const QSize& size = QSize( 0, 0 ) );
+UIDLLEXPORT QPixmap createRoundedImage( const QPixmap& avatar, const QSize& size, float frameWidthPct = 0.20 );
UIDLLEXPORT void unmarginLayout( QLayout* layout );
-DLLEXPORT void setDefaultFontSize( int points );
-DLLEXPORT int defaultFontSize();
-DLLEXPORT int defaultFontHeight();
-DLLEXPORT QSize defaultIconSize();
+UIDLLEXPORT void setDefaultFontSize( int points );
+UIDLLEXPORT int defaultFontSize();
+UIDLLEXPORT int defaultFontHeight();
+UIDLLEXPORT QSize defaultIconSize();
}
diff --git a/src/libcalamaresui/utils/ImageRegistry.cpp b/src/libcalamaresui/utils/ImageRegistry.cpp
new file mode 100644
index 000000000..48f5ea867
--- /dev/null
+++ b/src/libcalamaresui/utils/ImageRegistry.cpp
@@ -0,0 +1,163 @@
+/* === This file is part of Calamares - ===
+ *
+ * Copyright 2014, Teo Mrnjavac
+ *
+ * Originally from Tomahawk,
+ * Copyright 2012, Christian Muehlhaeuser
+ *
+ * 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 "ImageRegistry.h"
+
+#include
+#include
+#include
+
+#include "utils/Logger.h"
+
+static QHash< QString, QHash< int, QHash< qint64, QPixmap > > > s_cache;
+ImageRegistry* ImageRegistry::s_instance = 0;
+
+
+ImageRegistry*
+ImageRegistry::instance()
+{
+ return s_instance;
+}
+
+
+ImageRegistry::ImageRegistry()
+{
+ s_instance = this;
+}
+
+
+QIcon
+ImageRegistry::icon( const QString& image, CalamaresUtils::ImageMode mode )
+{
+ return pixmap( image, CalamaresUtils::defaultIconSize(), mode );
+}
+
+
+qint64
+ImageRegistry::cacheKey( const QSize& size, float opacity, QColor tint )
+{
+ return size.width() * 100 + size.height() * 10 + ( opacity * 100.0 ) + tint.value();
+}
+
+
+QPixmap
+ImageRegistry::pixmap( const QString& image, const QSize& size, CalamaresUtils::ImageMode mode, float opacity, QColor tint )
+{
+ QHash< qint64, QPixmap > subsubcache;
+ QHash< int, QHash< qint64, QPixmap > > subcache;
+
+ if ( s_cache.contains( image ) )
+ {
+ subcache = s_cache.value( image );
+
+ if ( subcache.contains( mode ) )
+ {
+ subsubcache = subcache.value( mode );
+
+ const qint64 ck = cacheKey( size, opacity, tint );
+ if ( subsubcache.contains( ck ) )
+ {
+ return subsubcache.value( ck );
+ }
+ }
+ }
+
+ // Image not found in cache. Let's load it.
+ QPixmap pixmap;
+ if ( image.toLower().endsWith( ".svg" ) ||
+ image.toLower().endsWith( ".svgz" ) )
+ {
+ QSvgRenderer svgRenderer( image );
+ QPixmap p( size.isNull() ? svgRenderer.defaultSize() : size );
+ p.fill( Qt::transparent );
+
+ QPainter pixPainter( &p );
+ pixPainter.setOpacity( opacity );
+ svgRenderer.render( &pixPainter );
+ pixPainter.end();
+
+ if ( tint.alpha() > 0 )
+ {
+ QImage resultImage( p.size(), QImage::Format_ARGB32_Premultiplied );
+ QPainter painter( &resultImage );
+ painter.drawPixmap( 0, 0, p );
+ painter.setCompositionMode( QPainter::CompositionMode_Screen );
+ painter.fillRect( resultImage.rect(), tint );
+ painter.end();
+
+ resultImage.setAlphaChannel( p.toImage().alphaChannel() );
+ p = QPixmap::fromImage( resultImage );
+ }
+
+ pixmap = p;
+ }
+ else
+ pixmap = QPixmap( image );
+
+ if ( !pixmap.isNull() )
+ {
+ switch ( mode )
+ {
+ case CalamaresUtils::RoundedCorners:
+ pixmap = CalamaresUtils::createRoundedImage( pixmap, size );
+ break;
+
+ default:
+ break;
+ }
+
+ if ( !size.isNull() && pixmap.size() != size )
+ pixmap = pixmap.scaled( size, Qt::IgnoreAspectRatio, Qt::SmoothTransformation );
+
+ putInCache( image, size, mode, opacity, pixmap, tint );
+ }
+
+ return pixmap;
+}
+
+
+void
+ImageRegistry::putInCache( const QString& image, const QSize& size, CalamaresUtils::ImageMode mode, float opacity, const QPixmap& pixmap, QColor tint )
+{
+ cDebug( LOGVERBOSE ) << Q_FUNC_INFO << "Adding to image cache:" << image << size << mode;
+
+ QHash< qint64, QPixmap > subsubcache;
+ QHash< int, QHash< qint64, QPixmap > > subcache;
+
+ if ( s_cache.contains( image ) )
+ {
+ subcache = s_cache.value( image );
+
+ if ( subcache.contains( mode ) )
+ {
+ subsubcache = subcache.value( mode );
+
+/* if ( subsubcache.contains( size.width() * size.height() ) )
+ {
+ Q_ASSERT( false );
+ }*/
+ }
+ }
+
+ subsubcache.insert( cacheKey( size, opacity, tint ), pixmap );
+ subcache.insert( mode, subsubcache );
+ s_cache.insert( image, subcache );
+}
diff --git a/src/libcalamaresui/utils/ImageRegistry.h b/src/libcalamaresui/utils/ImageRegistry.h
new file mode 100644
index 000000000..41ed2d6ac
--- /dev/null
+++ b/src/libcalamaresui/utils/ImageRegistry.h
@@ -0,0 +1,47 @@
+/* === This file is part of Calamares - ===
+ *
+ * Copyright 2014, Teo Mrnjavac
+ *
+ * Originally from Tomahawk,
+ * Copyright 2012, Christian Muehlhaeuser
+ *
+ * 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 IMAGE_REGISTRY_H
+#define IMAGE_REGISTRY_H
+
+#include
+
+#include "utils/CalamaresUtilsGui.h"
+#include "UiDllMacro.h"
+
+class UIDLLEXPORT ImageRegistry
+{
+public:
+ static ImageRegistry* instance();
+
+ explicit ImageRegistry();
+
+ QIcon icon( const QString& image, CalamaresUtils::ImageMode mode = CalamaresUtils::Original );
+ QPixmap pixmap( const QString& image, const QSize& size, CalamaresUtils::ImageMode mode = CalamaresUtils::Original, float opacity = 1.0, QColor tint = QColor( 0, 0, 0, 0 ) );
+
+private:
+ qint64 cacheKey( const QSize& size, float opacity, QColor tint );
+ void putInCache( const QString& image, const QSize& size, CalamaresUtils::ImageMode mode, float opacity, const QPixmap& pixmap, QColor tint );
+
+ static ImageRegistry* s_instance;
+};
+
+#endif // IMAGE_REGISTRY_H
diff --git a/src/modules/keyboard/CMakeLists.txt b/src/modules/keyboard/CMakeLists.txt
index fdfc6695e..99405c99f 100644
--- a/src/modules/keyboard/CMakeLists.txt
+++ b/src/modules/keyboard/CMakeLists.txt
@@ -10,6 +10,8 @@ calamares_add_plugin( keyboard
keyboardwidget/keyboardpreview.cpp
UI
KeyboardPage.ui
+ RESOURCES
+ keyboard.qrc
LINK_LIBRARIES
calamaresui
SHARED_LIB
diff --git a/src/modules/keyboard/resources.qrc b/src/modules/keyboard/keyboard.qrc
similarity index 100%
rename from src/modules/keyboard/resources.qrc
rename to src/modules/keyboard/keyboard.qrc
diff --git a/src/modules/locale/CMakeLists.txt b/src/modules/locale/CMakeLists.txt
index 3fa6c00ce..1a0082159 100644
--- a/src/modules/locale/CMakeLists.txt
+++ b/src/modules/locale/CMakeLists.txt
@@ -10,6 +10,8 @@ calamares_add_plugin( locale
timezonewidget/timezonewidget.cpp
timezonewidget/localeglobal.cpp
UI
+ RESOURCES
+ locale.qrc
LINK_LIBRARIES
calamaresui
SHARED_LIB
diff --git a/src/modules/locale/resources.qrc b/src/modules/locale/locale.qrc
similarity index 100%
rename from src/modules/locale/resources.qrc
rename to src/modules/locale/locale.qrc
diff --git a/src/modules/prepare/CMakeLists.txt b/src/modules/prepare/CMakeLists.txt
index b89b26eda..c9bad0181 100644
--- a/src/modules/prepare/CMakeLists.txt
+++ b/src/modules/prepare/CMakeLists.txt
@@ -9,8 +9,9 @@ calamares_add_plugin( prepare
TYPE viewmodule
EXPORT_MACRO PLUGINDLLEXPORT_PRO
SOURCES
- PrepareViewStep.cpp
+ PrepareCheckWidget.cpp
PreparePage.cpp
+ PrepareViewStep.cpp
partman_devices.c
UI
LINK_LIBRARIES
diff --git a/src/modules/prepare/PrepareCheckWidget.cpp b/src/modules/prepare/PrepareCheckWidget.cpp
new file mode 100644
index 000000000..59686241f
--- /dev/null
+++ b/src/modules/prepare/PrepareCheckWidget.cpp
@@ -0,0 +1,50 @@
+/* === This file is part of Calamares - ===
+ *
+ * Copyright 2014, 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 "PrepareCheckWidget.h"
+
+#include "utils/CalamaresUtilsGui.h"
+#include "utils/Logger.h"
+
+#include
+
+PrepareCheckWidget::PrepareCheckWidget( const QString &text,
+ bool checked,
+ QWidget* parent )
+ : QWidget( parent )
+{
+ QBoxLayout* mainLayout = new QHBoxLayout;
+ setLayout( mainLayout );
+
+ m_iconLabel = new QLabel( this );
+ mainLayout->addWidget( m_iconLabel );
+ m_textLabel = new QLabel( text, this );
+ mainLayout->addWidget( m_textLabel );
+ m_textLabel->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred );
+
+ if ( checked )
+ m_iconLabel->setPixmap( CalamaresUtils::defaultPixmap( CalamaresUtils::Yes,
+ CalamaresUtils::Original,
+ QSize( m_iconLabel->height(),
+ m_iconLabel->height() ) ) );
+ else
+ m_iconLabel->setPixmap( CalamaresUtils::defaultPixmap( CalamaresUtils::No,
+ CalamaresUtils::Original,
+ QSize( m_iconLabel->height(),
+ m_iconLabel->height() ) ) );
+}
diff --git a/src/modules/prepare/PrepareCheckWidget.h b/src/modules/prepare/PrepareCheckWidget.h
new file mode 100644
index 000000000..43efad018
--- /dev/null
+++ b/src/modules/prepare/PrepareCheckWidget.h
@@ -0,0 +1,36 @@
+/* === This file is part of Calamares - ===
+ *
+ * Copyright 2014, 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 PREPARECHECKWIDGET_H
+#define PREPARECHECKWIDGET_H
+
+#include
+
+class PrepareCheckWidget : public QWidget
+{
+ Q_OBJECT
+public:
+ explicit PrepareCheckWidget( const QString &text,
+ bool checked,
+ QWidget* parent = nullptr );
+private:
+ QLabel* m_textLabel;
+ QLabel* m_iconLabel;
+};
+
+#endif // PREPARECHECKWIDGET_H
diff --git a/src/modules/prepare/PreparePage.cpp b/src/modules/prepare/PreparePage.cpp
index 46f7445fa..521911377 100644
--- a/src/modules/prepare/PreparePage.cpp
+++ b/src/modules/prepare/PreparePage.cpp
@@ -18,6 +18,10 @@
#include "PreparePage.h"
+#include "PrepareCheckWidget.h"
+
+#include "utils/CalamaresUtilsGui.h"
+
#include
#include
@@ -30,16 +34,25 @@ PreparePage::PreparePage( QWidget* parent )
QLabel* text = new QLabel( tr( "For best results, please ensure that this "
"computer:" ), this );
- text->setAlignment( Qt::AlignCenter );
- mainLayout->addStretch();
mainLayout->addWidget( text );
+ QHBoxLayout* spacerLayout = new QHBoxLayout;
+ mainLayout->addLayout( spacerLayout );
+ spacerLayout->addSpacing( CalamaresUtils::defaultFontHeight() * 2 );
+ m_entriesLayout = new QVBoxLayout;
+ spacerLayout->addLayout( m_entriesLayout );
+ CalamaresUtils::unmarginLayout( spacerLayout );
mainLayout->addStretch();
}
void
-PreparePage::init()
+PreparePage::init( const QList< QPair< QString, bool > > &checkEntries )
{
-
+ for ( const QPair< QString, bool >& entry : checkEntries )
+ {
+ PrepareCheckWidget* pcw = new PrepareCheckWidget( entry.first, entry.second );
+ m_entriesLayout->addWidget( pcw );
+ pcw->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred );
+ }
}
diff --git a/src/modules/prepare/PreparePage.h b/src/modules/prepare/PreparePage.h
index 6ee64c49a..3230656d9 100644
--- a/src/modules/prepare/PreparePage.h
+++ b/src/modules/prepare/PreparePage.h
@@ -19,6 +19,7 @@
#ifndef PREPAREPAGE_H
#define PREPAREPAGE_H
+#include
#include
class PreparePage : public QWidget
@@ -27,8 +28,10 @@ class PreparePage : public QWidget
public:
explicit PreparePage( QWidget* parent = nullptr );
- void init();
+ void init( const QList< QPair< QString, bool > >& checkEntries );
+private:
+ QBoxLayout* m_entriesLayout;
};
#endif // PREPAREPAGE_H
diff --git a/src/modules/prepare/PrepareViewStep.cpp b/src/modules/prepare/PrepareViewStep.cpp
index 174c4b9e1..f49d3c0bb 100644
--- a/src/modules/prepare/PrepareViewStep.cpp
+++ b/src/modules/prepare/PrepareViewStep.cpp
@@ -97,7 +97,23 @@ PrepareViewStep::PrepareViewStep( QObject* parent )
cDebug() << "enoughStorage, enoughRam, hasPower, hasInternet: "
<< enoughStorage << enoughRam << hasPower << hasInternet;
- m_actualWidget->init();
+ QList< QPair< QString, bool > > checkEntries;
+ checkEntries.append( qMakePair(
+ tr( "has at least %1 GB available drive space" )
+ .arg( m_requiredStorageGB ),
+ enoughStorage ) );
+ checkEntries.append( qMakePair(
+ tr( "has at least %1 GB working memory" )
+ .arg( m_requiredRamGB ),
+ enoughRam ) );
+ checkEntries.append( qMakePair(
+ tr( "is plugged in to a power source" ),
+ hasPower ) );
+ checkEntries.append( qMakePair(
+ tr( "is connected to the Internet" ),
+ hasInternet ) );
+
+ m_actualWidget->init( checkEntries );
m_widget->layout()->removeWidget( waitingWidget );
waitingWidget->deleteLater();
m_widget->layout()->addWidget( m_actualWidget );
diff --git a/src/modules/users/CMakeLists.txt b/src/modules/users/CMakeLists.txt
index 4905ccf94..4d4ef208f 100644
--- a/src/modules/users/CMakeLists.txt
+++ b/src/modules/users/CMakeLists.txt
@@ -13,6 +13,8 @@ calamares_add_plugin( users
UsersPage.cpp
UI
page_usersetup.ui
+ RESOURCES
+ users.qrc
LINK_LIBRARIES
calamaresui
${CRYPT_LIBRARIES}
diff --git a/src/modules/users/resources.qrc b/src/modules/users/users.qrc
similarity index 100%
rename from src/modules/users/resources.qrc
rename to src/modules/users/users.qrc