[plasmalnf] Search for theme screenshots

- Search in branding dir, and ., for relative paths,
 - Absolute paths used as-is.
 - Document search as such.
This commit is contained in:
Adriaan de Groot 2018-04-10 08:54:47 -04:00
parent bfb37e6b37
commit fa933b9a16
2 changed files with 34 additions and 1 deletions

View File

@ -22,10 +22,39 @@
#include "utils/CalamaresUtilsGui.h" #include "utils/CalamaresUtilsGui.h"
#include "utils/Logger.h" #include "utils/Logger.h"
#include "Branding.h"
#include <QDir>
#include <QFileInfo>
#include <QHBoxLayout> #include <QHBoxLayout>
#include <QLabel> #include <QLabel>
#include <QRadioButton> #include <QRadioButton>
#include <QString>
/**
* Massage the given @p path to the most-likely
* path that actually contains a screenshot. For
* empty image paths, returns the QRC path for an
* empty screenshot. Returns blank if the path
* doesn't exist anywhere in the search paths.
*/
static QString _munge_imagepath( const QString& path )
{
if ( path.isEmpty() )
return ":/view-preview.png";
if ( path.startsWith( '/' ) )
return path;
if ( QFileInfo::exists( path ) )
return path;
QFileInfo fi( QDir( Calamares::Branding::instance()->componentDirectory() ), path );
if ( fi.exists() )
return fi.absoluteFilePath();
return QString();
}
ThemeWidget::ThemeWidget(const ThemeInfo& info, QWidget* parent) ThemeWidget::ThemeWidget(const ThemeInfo& info, QWidget* parent)
: QWidget( parent ) : QWidget( parent )
@ -42,7 +71,7 @@ ThemeWidget::ThemeWidget(const ThemeInfo& info, QWidget* parent)
qMax(12 * CalamaresUtils::defaultFontHeight(), 120), qMax(12 * CalamaresUtils::defaultFontHeight(), 120),
qMax(8 * CalamaresUtils::defaultFontHeight(), 80) }; qMax(8 * CalamaresUtils::defaultFontHeight(), 80) };
QPixmap image( info.imagePath.isEmpty() ? ":/view-preview.png" : info.imagePath ); QPixmap image( _munge_imagepath( info.imagePath ) );
if ( image.isNull() ) if ( image.isNull() )
{ {
// Not found or not specified, so convert the name into some (horrible, likely) // Not found or not specified, so convert the name into some (horrible, likely)

View File

@ -32,6 +32,10 @@ lnftool: "/usr/bin/lookandfeeltool"
# Themes with no image set at all get a "missing screenshot" image; if the # Themes with no image set at all get a "missing screenshot" image; if the
# image file is not found, they get a color swatch based on the image name. # image file is not found, they get a color swatch based on the image name.
# #
# The image may be an absolute path. If it is a relative path, though,
# it is searched in the current directory and in the branding directory
# (i.e. relative to the directory where your branding.desc lives).
#
# Valid forms of entries in the *themes* key: # Valid forms of entries in the *themes* key:
# - A single string (unquoted), which is the theme id # - A single string (unquoted), which is the theme id
# - A pair of *theme* and *image* keys, e.g. # - A pair of *theme* and *image* keys, e.g.