[libcalamaresui] Refactor loading slideshow
- split into a separate method - when QML is disabled, warn about QML settings
This commit is contained in:
parent
c83e5c57a4
commit
022045ae05
@ -180,6 +180,7 @@ Branding::Branding( const QString& brandingFilePath, QObject* parent )
|
|||||||
"component directory." );
|
"component directory." );
|
||||||
|
|
||||||
initSimpleSettings( doc );
|
initSimpleSettings( doc );
|
||||||
|
initSlideshowSettings( doc );
|
||||||
|
|
||||||
#ifdef WITH_KOSRelease
|
#ifdef WITH_KOSRelease
|
||||||
// Copy the os-release information into a QHash for use by KMacroExpander.
|
// Copy the os-release information into a QHash for use by KMacroExpander.
|
||||||
@ -202,17 +203,15 @@ Branding::Branding( const QString& brandingFilePath, QObject* parent )
|
|||||||
{ QStringLiteral( "VARIANT" ), relInfo.variant() },
|
{ QStringLiteral( "VARIANT" ), relInfo.variant() },
|
||||||
{ QStringLiteral( "VARIANT_ID" ), relInfo.variantId() },
|
{ QStringLiteral( "VARIANT_ID" ), relInfo.variantId() },
|
||||||
{ QStringLiteral( "LOGO" ), relInfo.logo() } } };
|
{ QStringLiteral( "LOGO" ), relInfo.logo() } } };
|
||||||
auto expand = [ & ]( const QString& s ) -> QString {
|
auto expand = [&]( const QString& s ) -> QString {
|
||||||
return KMacroExpander::expandMacros( s, relMap, QLatin1Char( '@' ) );
|
return KMacroExpander::expandMacros( s, relMap, QLatin1Char( '@' ) );
|
||||||
};
|
};
|
||||||
#else
|
#else
|
||||||
auto expand = []( const QString& s ) -> QString { return s; };
|
auto expand = []( const QString& s ) -> QString { return s; };
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
// Massage the strings, images and style sections.
|
// Massage the strings, images and style sections.
|
||||||
loadStrings( m_strings, doc, "strings", expand );
|
loadStrings( m_strings, doc, "strings", expand );
|
||||||
loadStrings( m_images, doc, "images", [ & ]( const QString& s ) -> QString {
|
loadStrings( m_images, doc, "images", [&]( const QString& s ) -> QString {
|
||||||
// See also image()
|
// See also image()
|
||||||
const QString imageName( expand( s ) );
|
const QString imageName( expand( s ) );
|
||||||
QFileInfo imageFi( componentDir.absoluteFilePath( imageName ) );
|
QFileInfo imageFi( componentDir.absoluteFilePath( imageName ) );
|
||||||
@ -230,50 +229,6 @@ Branding::Branding( const QString& brandingFilePath, QObject* parent )
|
|||||||
return imageFi.absoluteFilePath();
|
return imageFi.absoluteFilePath();
|
||||||
} );
|
} );
|
||||||
loadStrings( m_style, doc, "style", []( const QString& s ) -> QString { return s; } );
|
loadStrings( m_style, doc, "style", []( const QString& s ) -> QString { return s; } );
|
||||||
|
|
||||||
if ( doc[ "slideshow" ].IsSequence() )
|
|
||||||
{
|
|
||||||
QStringList slideShowPictures;
|
|
||||||
doc[ "slideshow" ] >> slideShowPictures;
|
|
||||||
for ( int i = 0; i < slideShowPictures.count(); ++i )
|
|
||||||
{
|
|
||||||
QString pathString = slideShowPictures[ i ];
|
|
||||||
QFileInfo imageFi( componentDir.absoluteFilePath( pathString ) );
|
|
||||||
if ( !imageFi.exists() )
|
|
||||||
{
|
|
||||||
bail( m_descriptorPath,
|
|
||||||
QString( "Slideshow file %1 does not exist." ).arg( imageFi.absoluteFilePath() ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
slideShowPictures[ i ] = imageFi.absoluteFilePath();
|
|
||||||
}
|
|
||||||
|
|
||||||
m_slideshowFilenames = slideShowPictures;
|
|
||||||
m_slideshowAPI = -1;
|
|
||||||
}
|
|
||||||
else if ( doc[ "slideshow" ].IsScalar() )
|
|
||||||
{
|
|
||||||
QString slideshowPath = QString::fromStdString( doc[ "slideshow" ].as< std::string >() );
|
|
||||||
QFileInfo slideshowFi( componentDir.absoluteFilePath( slideshowPath ) );
|
|
||||||
if ( !slideshowFi.exists() || !slideshowFi.fileName().toLower().endsWith( ".qml" ) )
|
|
||||||
bail( m_descriptorPath,
|
|
||||||
QString( "Slideshow file %1 does not exist or is not a valid QML file." )
|
|
||||||
.arg( slideshowFi.absoluteFilePath() ) );
|
|
||||||
m_slideshowPath = slideshowFi.absoluteFilePath();
|
|
||||||
|
|
||||||
// API choice is relevant for QML slideshow
|
|
||||||
int api = doc[ "slideshowAPI" ].IsScalar() ? doc[ "slideshowAPI" ].as< int >() : -1;
|
|
||||||
if ( ( api < 1 ) || ( api > 2 ) )
|
|
||||||
{
|
|
||||||
cWarning() << "Invalid or missing *slideshowAPI* in branding file.";
|
|
||||||
api = 1;
|
|
||||||
}
|
|
||||||
m_slideshowAPI = api;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
bail( m_descriptorPath, "Syntax error in slideshow sequence." );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch ( YAML::Exception& e )
|
catch ( YAML::Exception& e )
|
||||||
{
|
{
|
||||||
@ -556,4 +511,62 @@ Branding::initSimpleSettings( const YAML::Node& doc )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Branding::initSlideshowSettings( const YAML::Node& doc )
|
||||||
|
{
|
||||||
|
QDir componentDir( componentDirectory() );
|
||||||
|
|
||||||
|
if ( doc[ "slideshow" ].IsSequence() )
|
||||||
|
{
|
||||||
|
QStringList slideShowPictures;
|
||||||
|
doc[ "slideshow" ] >> slideShowPictures;
|
||||||
|
for ( int i = 0; i < slideShowPictures.count(); ++i )
|
||||||
|
{
|
||||||
|
QString pathString = slideShowPictures[ i ];
|
||||||
|
QFileInfo imageFi( componentDir.absoluteFilePath( pathString ) );
|
||||||
|
if ( !imageFi.exists() )
|
||||||
|
{
|
||||||
|
bail( m_descriptorPath,
|
||||||
|
QString( "Slideshow file %1 does not exist." ).arg( imageFi.absoluteFilePath() ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
slideShowPictures[ i ] = imageFi.absoluteFilePath();
|
||||||
|
}
|
||||||
|
|
||||||
|
m_slideshowFilenames = slideShowPictures;
|
||||||
|
m_slideshowAPI = -1;
|
||||||
|
}
|
||||||
|
#ifdef WITH_QML
|
||||||
|
else if ( doc[ "slideshow" ].IsScalar() )
|
||||||
|
{
|
||||||
|
QString slideshowPath = QString::fromStdString( doc[ "slideshow" ].as< std::string >() );
|
||||||
|
QFileInfo slideshowFi( componentDir.absoluteFilePath( slideshowPath ) );
|
||||||
|
if ( !slideshowFi.exists() || !slideshowFi.fileName().toLower().endsWith( ".qml" ) )
|
||||||
|
bail( m_descriptorPath,
|
||||||
|
QString( "Slideshow file %1 does not exist or is not a valid QML file." )
|
||||||
|
.arg( slideshowFi.absoluteFilePath() ) );
|
||||||
|
m_slideshowPath = slideshowFi.absoluteFilePath();
|
||||||
|
|
||||||
|
// API choice is relevant for QML slideshow
|
||||||
|
int api = doc[ "slideshowAPI" ].IsScalar() ? doc[ "slideshowAPI" ].as< int >() : -1;
|
||||||
|
if ( ( api < 1 ) || ( api > 2 ) )
|
||||||
|
{
|
||||||
|
cWarning() << "Invalid or missing *slideshowAPI* in branding file.";
|
||||||
|
api = 1;
|
||||||
|
}
|
||||||
|
m_slideshowAPI = api;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
else if ( doc[ "slideshow" ].IsScalar() )
|
||||||
|
{
|
||||||
|
cWarning() << "Invalid *slideshow* setting, must be list of images.";
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
else
|
||||||
|
{
|
||||||
|
bail( m_descriptorPath, "Syntax error in slideshow sequence." );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
} // namespace Calamares
|
} // namespace Calamares
|
||||||
|
@ -262,6 +262,8 @@ private:
|
|||||||
|
|
||||||
/** @brief Initialize the simple settings below */
|
/** @brief Initialize the simple settings below */
|
||||||
void initSimpleSettings( const YAML::Node& doc );
|
void initSimpleSettings( const YAML::Node& doc );
|
||||||
|
///@brief Initialize the slideshow settings, above
|
||||||
|
void initSlideshowSettings( const YAML::Node& doc );
|
||||||
|
|
||||||
bool m_welcomeStyleCalamares;
|
bool m_welcomeStyleCalamares;
|
||||||
bool m_welcomeExpandingLogo;
|
bool m_welcomeExpandingLogo;
|
||||||
|
Loading…
Reference in New Issue
Block a user