[dummyqml] Improve QML searching

- if the filename is an absolute path, use that
 - support searching in branding directory
This commit is contained in:
Adriaan de Groot 2020-01-13 22:28:21 +01:00
parent 7f8a31007a
commit 750465153f

View File

@ -18,6 +18,8 @@
#include "QmlViewStep.h" #include "QmlViewStep.h"
#include "Branding.h"
#include "utils/Dirs.h" #include "utils/Dirs.h"
#include "utils/Logger.h" #include "utils/Logger.h"
#include "utils/NamedEnum.h" #include "utils/NamedEnum.h"
@ -190,10 +192,27 @@ Calamares::QmlViewStep::showQml()
QString QString
searchQmlFile( Calamares::QmlViewStep::QmlSearch method, const QString& configuredName, const QString& moduleName ) searchQmlFile( Calamares::QmlViewStep::QmlSearch method, const QString& configuredName, const QString& moduleName )
{ {
using QmlSearch = Calamares::QmlViewStep::QmlSearch;
cDebug() << "Looking for QML for" << moduleName; cDebug() << "Looking for QML for" << moduleName;
for ( const QString& candidate : QStringList candidates;
QStringList { configuredName.isEmpty() ? QString() : QStringLiteral( ":/%1.qml" ).arg( configuredName ), if ( configuredName.startsWith( '/' ) )
moduleName.isEmpty() ? QString() : QStringLiteral( ":/%1.qml" ).arg( moduleName ) } ) {
candidates << configuredName;
}
if ( ( method == QmlSearch::Both ) || ( method == QmlSearch::BrandingOnly ) )
{
QString brandDir = Calamares::Branding::instance()->componentDirectory();
candidates << ( configuredName.isEmpty() ? QString()
: QStringLiteral( "%1/%2.qml" ).arg( brandDir, configuredName ) )
<< ( moduleName.isEmpty() ? QString() : QStringLiteral( "%1/%2.qml" ).arg( brandDir, moduleName ) );
}
if ( ( method == QmlSearch::Both ) || ( method == QmlSearch::QrcOnly ) )
{
candidates << ( configuredName.isEmpty() ? QString() : QStringLiteral( ":/%1.qml" ).arg( configuredName ) )
<< ( moduleName.isEmpty() ? QString() : QStringLiteral( ":/%1.qml" ).arg( moduleName ) );
}
for ( const QString& candidate : candidates )
{ {
if ( candidate.isEmpty() ) if ( candidate.isEmpty() )
{ {