Merge branch 'issue-1669' into calamares
This commit is contained in:
commit
51c18baedb
5
CHANGES
5
CHANGES
@ -19,6 +19,11 @@ This release contains contributions from (alphabetically by first name):
|
|||||||
- *networkcfg* now translates the "live user" on an ISO to the regular
|
- *networkcfg* now translates the "live user" on an ISO to the regular
|
||||||
user on the installed system, so that network configuration changes
|
user on the installed system, so that network configuration changes
|
||||||
made in the live system are automatically used after installation.
|
made in the live system are automatically used after installation.
|
||||||
|
- *welcome* can now check multiple URLs to determine if internet connectivity
|
||||||
|
is available. It is still recommended to check the distro home-page or
|
||||||
|
some special "ping" page of the distro, although that has some privacy
|
||||||
|
implications; using example.com or google.com may work as well. Listing
|
||||||
|
multiple URLs will ping each of them in turn until one succeeds.
|
||||||
|
|
||||||
|
|
||||||
# 3.2.41.1 (2021-08-05) #
|
# 3.2.41.1 (2021-08-05) #
|
||||||
|
@ -104,6 +104,10 @@ Settings* Settings::s_instance = nullptr;
|
|||||||
Settings*
|
Settings*
|
||||||
Settings::instance()
|
Settings::instance()
|
||||||
{
|
{
|
||||||
|
if ( !s_instance )
|
||||||
|
{
|
||||||
|
cWarning() << "Getting nullptr Settings instance.";
|
||||||
|
}
|
||||||
return s_instance;
|
return s_instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -238,6 +242,9 @@ Settings::Settings( bool debugMode )
|
|||||||
, m_disableCancel( false )
|
, m_disableCancel( false )
|
||||||
, m_disableCancelDuringExec( false )
|
, m_disableCancelDuringExec( false )
|
||||||
{
|
{
|
||||||
|
cWarning() << "Using bogus Calamares settings in"
|
||||||
|
<< ( debugMode ? QStringLiteral( "debug" ) : QStringLiteral( "regular" ) ) << "mode";
|
||||||
|
s_instance = this;
|
||||||
}
|
}
|
||||||
|
|
||||||
Settings::Settings( const QString& settingsFilePath, bool debugMode )
|
Settings::Settings( const QString& settingsFilePath, bool debugMode )
|
||||||
|
@ -20,6 +20,8 @@
|
|||||||
#include <QThread>
|
#include <QThread>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
namespace CalamaresUtils
|
namespace CalamaresUtils
|
||||||
{
|
{
|
||||||
namespace Network
|
namespace Network
|
||||||
@ -27,7 +29,7 @@ namespace Network
|
|||||||
void
|
void
|
||||||
RequestOptions::applyToRequest( QNetworkRequest* request ) const
|
RequestOptions::applyToRequest( QNetworkRequest* request ) const
|
||||||
{
|
{
|
||||||
#if QT_VERSION < QT_VERSION_CHECK(5, 15, 0)
|
#if QT_VERSION < QT_VERSION_CHECK( 5, 15, 0 )
|
||||||
constexpr const auto RedirectPolicyAttribute = QNetworkRequest::FollowRedirectsAttribute;
|
constexpr const auto RedirectPolicyAttribute = QNetworkRequest::FollowRedirectsAttribute;
|
||||||
#else
|
#else
|
||||||
constexpr const auto RedirectPolicyAttribute = QNetworkRequest::RedirectPolicyAttribute;
|
constexpr const auto RedirectPolicyAttribute = QNetworkRequest::RedirectPolicyAttribute;
|
||||||
@ -60,8 +62,9 @@ public slots:
|
|||||||
void cleanupNam();
|
void cleanupNam();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
QUrl m_hasInternetUrl;
|
QVector< QUrl > m_hasInternetUrls;
|
||||||
bool m_hasInternet;
|
bool m_hasInternet = false;
|
||||||
|
int m_lastCheckedUrlIndex = -1;
|
||||||
|
|
||||||
Private();
|
Private();
|
||||||
|
|
||||||
@ -155,8 +158,33 @@ Manager::hasInternet()
|
|||||||
bool
|
bool
|
||||||
Manager::checkHasInternet()
|
Manager::checkHasInternet()
|
||||||
{
|
{
|
||||||
|
if ( d->m_hasInternetUrls.empty() )
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if ( d->m_lastCheckedUrlIndex < 0 )
|
||||||
|
{
|
||||||
|
d->m_lastCheckedUrlIndex = 0;
|
||||||
|
}
|
||||||
|
int attempts = 0;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
// Start by pinging the same one as last time
|
||||||
|
d->m_hasInternet = synchronousPing( d->m_hasInternetUrls.at( d->m_lastCheckedUrlIndex ) );
|
||||||
|
// if it's not responding, **then** move on to the next one,
|
||||||
|
// and wrap around if needed
|
||||||
|
if ( !d->m_hasInternet )
|
||||||
|
{
|
||||||
|
if ( ++( d->m_lastCheckedUrlIndex ) >= d->m_hasInternetUrls.size() )
|
||||||
|
{
|
||||||
|
d->m_lastCheckedUrlIndex = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// keep track of how often we've tried, because there's no point in
|
||||||
|
// going around more than once.
|
||||||
|
attempts++;
|
||||||
|
} while ( !d->m_hasInternet && ( attempts < d->m_hasInternetUrls.size() ) );
|
||||||
|
|
||||||
d->m_hasInternet = synchronousPing( d->m_hasInternetUrl );
|
|
||||||
|
|
||||||
// For earlier Qt versions (< 5.15.0), set the accessibility flag to
|
// For earlier Qt versions (< 5.15.0), set the accessibility flag to
|
||||||
// NotAccessible if synchronous ping has failed, so that any module
|
// NotAccessible if synchronous ping has failed, so that any module
|
||||||
@ -177,7 +205,40 @@ Manager::checkHasInternet()
|
|||||||
void
|
void
|
||||||
Manager::setCheckHasInternetUrl( const QUrl& url )
|
Manager::setCheckHasInternetUrl( const QUrl& url )
|
||||||
{
|
{
|
||||||
d->m_hasInternetUrl = url;
|
d->m_lastCheckedUrlIndex = -1;
|
||||||
|
d->m_hasInternetUrls.clear();
|
||||||
|
if ( url.isValid() )
|
||||||
|
{
|
||||||
|
d->m_hasInternetUrls.append( url );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Manager::setCheckHasInternetUrl( const QVector< QUrl >& urls )
|
||||||
|
{
|
||||||
|
d->m_lastCheckedUrlIndex = -1;
|
||||||
|
d->m_hasInternetUrls = urls;
|
||||||
|
auto it = std::remove_if(
|
||||||
|
d->m_hasInternetUrls.begin(), d->m_hasInternetUrls.end(), []( const QUrl& u ) { return !u.isValid(); } );
|
||||||
|
if ( it != d->m_hasInternetUrls.end() )
|
||||||
|
{
|
||||||
|
d->m_hasInternetUrls.erase( it, d->m_hasInternetUrls.end() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Manager::addCheckHasInternetUrl( const QUrl& url )
|
||||||
|
{
|
||||||
|
if ( url.isValid() )
|
||||||
|
{
|
||||||
|
d->m_hasInternetUrls.append( url );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QVector< QUrl >
|
||||||
|
Manager::getCheckInternetUrls() const
|
||||||
|
{
|
||||||
|
return d->m_hasInternetUrls;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @brief Does a request asynchronously, returns the (pending) reply
|
/** @brief Does a request asynchronously, returns the (pending) reply
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QUrl>
|
#include <QUrl>
|
||||||
|
#include <QVector>
|
||||||
|
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
@ -89,6 +90,7 @@ class DLLEXPORT Manager : public QObject
|
|||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
Q_PROPERTY( bool hasInternet READ hasInternet NOTIFY hasInternetChanged FINAL )
|
Q_PROPERTY( bool hasInternet READ hasInternet NOTIFY hasInternetChanged FINAL )
|
||||||
|
Q_PROPERTY( QVector< QUrl > checkInternetUrls READ getCheckInternetUrls WRITE setCheckHasInternetUrl )
|
||||||
|
|
||||||
Manager();
|
Manager();
|
||||||
|
|
||||||
@ -122,6 +124,15 @@ public:
|
|||||||
/// @brief Set the URL which is used for the general "is there internet" check.
|
/// @brief Set the URL which is used for the general "is there internet" check.
|
||||||
void setCheckHasInternetUrl( const QUrl& url );
|
void setCheckHasInternetUrl( const QUrl& url );
|
||||||
|
|
||||||
|
/// @brief Adds an (extra) URL to check
|
||||||
|
void addCheckHasInternetUrl( const QUrl& url );
|
||||||
|
|
||||||
|
/// @brief Set a collection of URLs used for the general "is there internet" check.
|
||||||
|
void setCheckHasInternetUrl( const QVector< QUrl >& urls );
|
||||||
|
|
||||||
|
/// @brief What URLs are used to check for internet connectivity?
|
||||||
|
QVector< QUrl > getCheckInternetUrls() const;
|
||||||
|
|
||||||
/** @brief Do a network request asynchronously.
|
/** @brief Do a network request asynchronously.
|
||||||
*
|
*
|
||||||
* Returns a pointer to the reply-from-the-request.
|
* Returns a pointer to the reply-from-the-request.
|
||||||
|
@ -30,6 +30,7 @@ NetworkTests::testInstance()
|
|||||||
{
|
{
|
||||||
auto& nam = CalamaresUtils::Network::Manager::instance();
|
auto& nam = CalamaresUtils::Network::Manager::instance();
|
||||||
QVERIFY( !nam.hasInternet() );
|
QVERIFY( !nam.hasInternet() );
|
||||||
|
QCOMPARE( nam.getCheckInternetUrls().count(), 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -60,3 +61,87 @@ NetworkTests::testPing()
|
|||||||
QVERIFY( canPing_www_kde_org );
|
QVERIFY( canPing_www_kde_org );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
NetworkTests::testCheckUrl()
|
||||||
|
{
|
||||||
|
using namespace CalamaresUtils::Network;
|
||||||
|
Logger::setupLogLevel( Logger::LOGVERBOSE );
|
||||||
|
auto& nam = Manager::instance();
|
||||||
|
|
||||||
|
{
|
||||||
|
QUrl u( "http://example.com" );
|
||||||
|
QVERIFY( u.isValid() );
|
||||||
|
nam.setCheckHasInternetUrl( u );
|
||||||
|
QVERIFY( nam.checkHasInternet() );
|
||||||
|
QCOMPARE( nam.getCheckInternetUrls().count(), 1 ); // Valid URL
|
||||||
|
}
|
||||||
|
{
|
||||||
|
QUrl u( "http://nonexistent.example.com" );
|
||||||
|
QVERIFY( u.isValid() );
|
||||||
|
nam.setCheckHasInternetUrl( u );
|
||||||
|
QVERIFY( !nam.checkHasInternet() );
|
||||||
|
QCOMPARE( nam.getCheckInternetUrls().count(), 1 ); // Valid URL even if it doesn't resolve
|
||||||
|
}
|
||||||
|
{
|
||||||
|
QUrl u;
|
||||||
|
QVERIFY( !u.isValid() );
|
||||||
|
nam.setCheckHasInternetUrl( u );
|
||||||
|
QVERIFY( !nam.checkHasInternet() );
|
||||||
|
QCOMPARE( nam.getCheckInternetUrls().count(), 0 ); // Invalid URL tried
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
NetworkTests::testCheckMultiUrl()
|
||||||
|
{
|
||||||
|
using namespace CalamaresUtils::Network;
|
||||||
|
Logger::setupLogLevel( Logger::LOGVERBOSE );
|
||||||
|
auto& nam = Manager::instance();
|
||||||
|
|
||||||
|
{
|
||||||
|
QUrl u0( "http://example.com" );
|
||||||
|
QUrl u1( "https://kde.org" );
|
||||||
|
QVERIFY( u0.isValid() );
|
||||||
|
QVERIFY( u1.isValid() );
|
||||||
|
nam.setCheckHasInternetUrl( { u0, u1 } );
|
||||||
|
QVERIFY( nam.checkHasInternet() );
|
||||||
|
QCOMPARE( nam.getCheckInternetUrls().count(), 2 );
|
||||||
|
}
|
||||||
|
{
|
||||||
|
QUrl u0( "http://nonexistent.example.com" );
|
||||||
|
QUrl u1( "http://bogus.example.com" );
|
||||||
|
QVERIFY( u0.isValid() );
|
||||||
|
QVERIFY( u1.isValid() );
|
||||||
|
nam.setCheckHasInternetUrl( { u0, u1 } );
|
||||||
|
QVERIFY( !nam.checkHasInternet() );
|
||||||
|
QVERIFY( !nam.checkHasInternet() );
|
||||||
|
QCOMPARE( nam.getCheckInternetUrls().count(), 2 ); // Both are valid URLs
|
||||||
|
nam.addCheckHasInternetUrl( QUrl( "http://example.com" ) );
|
||||||
|
QVERIFY( nam.checkHasInternet() );
|
||||||
|
QCOMPARE( nam.getCheckInternetUrls().count(), 3 );
|
||||||
|
}
|
||||||
|
{
|
||||||
|
QUrl u0( "http://nonexistent.example.com" );
|
||||||
|
QUrl u1;
|
||||||
|
QVERIFY( u0.isValid() );
|
||||||
|
QVERIFY( !u1.isValid() );
|
||||||
|
nam.setCheckHasInternetUrl( { u0, u1 } );
|
||||||
|
QVERIFY( !nam.checkHasInternet() );
|
||||||
|
QVERIFY( !nam.checkHasInternet() );
|
||||||
|
QCOMPARE( nam.getCheckInternetUrls().count(), 1 ); // Only valid URL added
|
||||||
|
nam.addCheckHasInternetUrl( QUrl( "http://example.com" ) );
|
||||||
|
QVERIFY( nam.checkHasInternet() );
|
||||||
|
QCOMPARE( nam.getCheckInternetUrls().count(), 2 );
|
||||||
|
}
|
||||||
|
{
|
||||||
|
QUrl u0( "http://nonexistent.example.com" );
|
||||||
|
QUrl u1;
|
||||||
|
QVERIFY( u0.isValid() );
|
||||||
|
QVERIFY( !u1.isValid() );
|
||||||
|
nam.setCheckHasInternetUrl( { u1, u1, u1, u1 } );
|
||||||
|
QCOMPARE( nam.getCheckInternetUrls().count(), 0 );
|
||||||
|
nam.setCheckHasInternetUrl( { u1, u1, u0, u1 } );
|
||||||
|
QCOMPARE( nam.getCheckInternetUrls().count(), 1 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -24,6 +24,9 @@ private Q_SLOTS:
|
|||||||
|
|
||||||
void testInstance();
|
void testInstance();
|
||||||
void testPing();
|
void testPing();
|
||||||
|
|
||||||
|
void testCheckUrl();
|
||||||
|
void testCheckMultiUrl();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -102,7 +102,7 @@ System::instance()
|
|||||||
if ( !s_instance )
|
if ( !s_instance )
|
||||||
{
|
{
|
||||||
cError() << "No Calamares system-object has been created.";
|
cError() << "No Calamares system-object has been created.";
|
||||||
cError() << Logger::SubEntry << "using a bogus instance instead.";
|
cDebug() << Logger::SubEntry << "using a bogus instance instead.";
|
||||||
return new System( true, nullptr );
|
return new System( true, nullptr );
|
||||||
}
|
}
|
||||||
return s_instance;
|
return s_instance;
|
||||||
|
@ -34,7 +34,7 @@ DLLEXPORT QString getString( const QVariantMap& map, const QString& key, const Q
|
|||||||
|
|
||||||
/** @brief Get a string list from a mapping with a given key; returns @p d if no value.
|
/** @brief Get a string list from a mapping with a given key; returns @p d if no value.
|
||||||
*
|
*
|
||||||
* This is slightly more lenient that getString(), and a single-string value will
|
* This is slightly more lenient than getString(), and a single-string value will
|
||||||
* be returned as a 1-item list.
|
* be returned as a 1-item list.
|
||||||
*/
|
*/
|
||||||
DLLEXPORT QStringList getStringList( const QVariantMap& map, const QString& key, const QStringList& d = QStringList() );
|
DLLEXPORT QStringList getStringList( const QVariantMap& map, const QString& key, const QStringList& d = QStringList() );
|
||||||
|
@ -49,6 +49,10 @@ Branding* Branding::s_instance = nullptr;
|
|||||||
Branding*
|
Branding*
|
||||||
Branding::instance()
|
Branding::instance()
|
||||||
{
|
{
|
||||||
|
if ( !s_instance )
|
||||||
|
{
|
||||||
|
cWarning() << "No Branding instance created yet.";
|
||||||
|
}
|
||||||
return s_instance;
|
return s_instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,26 +8,22 @@ find_package( Qt5 ${QT_VERSION} CONFIG REQUIRED DBus Network )
|
|||||||
find_package( LIBPARTED )
|
find_package( LIBPARTED )
|
||||||
if ( LIBPARTED_FOUND )
|
if ( LIBPARTED_FOUND )
|
||||||
set( PARTMAN_SRC checker/partman_devices.c )
|
set( PARTMAN_SRC checker/partman_devices.c )
|
||||||
set( CHECKER_LINK_LIBRARIES ${LIBPARTED_LIBRARY} )
|
set( PARTMAN_LIB ${LIBPARTED_LIBRARY} )
|
||||||
else()
|
else()
|
||||||
set( PARTMAN_SRC )
|
set( PARTMAN_SRC )
|
||||||
set( CHECKER_LINK_LIBRARIES )
|
set( PARTMAN_LIB )
|
||||||
add_definitions( -DWITHOUT_LIBPARTED )
|
add_definitions( -DWITHOUT_LIBPARTED )
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set( CHECKER_SOURCES
|
|
||||||
checker/CheckerContainer.cpp
|
|
||||||
checker/GeneralRequirements.cpp
|
|
||||||
checker/ResultWidget.cpp
|
|
||||||
checker/ResultsListWidget.cpp
|
|
||||||
${PARTMAN_SRC}
|
|
||||||
)
|
|
||||||
|
|
||||||
calamares_add_plugin( welcome
|
calamares_add_plugin( welcome
|
||||||
TYPE viewmodule
|
TYPE viewmodule
|
||||||
EXPORT_MACRO PLUGINDLLEXPORT_PRO
|
EXPORT_MACRO PLUGINDLLEXPORT_PRO
|
||||||
SOURCES
|
SOURCES
|
||||||
${CHECKER_SOURCES}
|
checker/CheckerContainer.cpp
|
||||||
|
checker/GeneralRequirements.cpp
|
||||||
|
checker/ResultWidget.cpp
|
||||||
|
checker/ResultsListWidget.cpp
|
||||||
|
${PARTMAN_SRC}
|
||||||
WelcomeViewStep.cpp
|
WelcomeViewStep.cpp
|
||||||
Config.cpp
|
Config.cpp
|
||||||
Config.h
|
Config.h
|
||||||
@ -37,8 +33,23 @@ calamares_add_plugin( welcome
|
|||||||
RESOURCES
|
RESOURCES
|
||||||
welcome.qrc
|
welcome.qrc
|
||||||
LINK_PRIVATE_LIBRARIES
|
LINK_PRIVATE_LIBRARIES
|
||||||
${CHECKER_LINK_LIBRARIES}
|
${PARTMAN_LIB}
|
||||||
Qt5::DBus
|
Qt5::DBus
|
||||||
Qt5::Network
|
Qt5::Network
|
||||||
SHARED_LIB
|
SHARED_LIB
|
||||||
)
|
)
|
||||||
|
|
||||||
|
calamares_add_test(
|
||||||
|
welcometest
|
||||||
|
SOURCES
|
||||||
|
checker/GeneralRequirements.cpp
|
||||||
|
${PARTMAN_SRC}
|
||||||
|
Config.cpp
|
||||||
|
Tests.cpp
|
||||||
|
LIBRARIES
|
||||||
|
${PARTMAN_LIB}
|
||||||
|
Qt5::DBus
|
||||||
|
Qt5::Network
|
||||||
|
Qt5::Widgets
|
||||||
|
Calamares::calamaresui
|
||||||
|
)
|
||||||
|
@ -27,6 +27,7 @@ Config::Config( QObject* parent )
|
|||||||
: QObject( parent )
|
: QObject( parent )
|
||||||
, m_languages( CalamaresUtils::Locale::availableTranslations() )
|
, m_languages( CalamaresUtils::Locale::availableTranslations() )
|
||||||
, m_filtermodel( std::make_unique< QSortFilterProxyModel >() )
|
, m_filtermodel( std::make_unique< QSortFilterProxyModel >() )
|
||||||
|
, m_requirementsChecker( std::make_unique< GeneralRequirements >( this ) )
|
||||||
{
|
{
|
||||||
initLanguages();
|
initLanguages();
|
||||||
|
|
||||||
@ -38,14 +39,16 @@ Config::Config( QObject* parent )
|
|||||||
void
|
void
|
||||||
Config::retranslate()
|
Config::retranslate()
|
||||||
{
|
{
|
||||||
m_genericWelcomeMessage = genericWelcomeMessage().arg( Calamares::Branding::instance()->versionedName() );
|
const auto* branding = Calamares::Branding::instance();
|
||||||
|
const auto* settings = Calamares::Settings::instance();
|
||||||
|
m_genericWelcomeMessage = genericWelcomeMessage().arg( branding ? branding->versionedName() : QString() );
|
||||||
emit genericWelcomeMessageChanged( m_genericWelcomeMessage );
|
emit genericWelcomeMessageChanged( m_genericWelcomeMessage );
|
||||||
|
|
||||||
const auto* r = requirementsModel();
|
const auto* r = requirementsModel();
|
||||||
if ( !r->satisfiedRequirements() )
|
if ( r && !r->satisfiedRequirements() )
|
||||||
{
|
{
|
||||||
QString message;
|
QString message;
|
||||||
const bool setup = Calamares::Settings::instance()->isSetupMode();
|
const bool setup = settings ? settings->isSetupMode() : false;
|
||||||
|
|
||||||
if ( !r->satisfiedMandatory() )
|
if ( !r->satisfiedMandatory() )
|
||||||
{
|
{
|
||||||
@ -70,13 +73,13 @@ Config::retranslate()
|
|||||||
"might be disabled." );
|
"might be disabled." );
|
||||||
}
|
}
|
||||||
|
|
||||||
m_warningMessage = message.arg( Calamares::Branding::instance()->shortVersionedName() );
|
m_warningMessage = message.arg( branding ? branding->shortVersionedName() : QString() );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_warningMessage = tr( "This program will ask you some questions and "
|
m_warningMessage = tr( "This program will ask you some questions and "
|
||||||
"set up %2 on your computer." )
|
"set up %2 on your computer." )
|
||||||
.arg( Calamares::Branding::instance()->productName() );
|
.arg( branding ? branding->productName() : QString() );
|
||||||
}
|
}
|
||||||
|
|
||||||
emit warningMessageChanged( m_warningMessage );
|
emit warningMessageChanged( m_warningMessage );
|
||||||
@ -91,7 +94,8 @@ Config::languagesModel() const
|
|||||||
Calamares::RequirementsModel*
|
Calamares::RequirementsModel*
|
||||||
Config::requirementsModel() const
|
Config::requirementsModel() const
|
||||||
{
|
{
|
||||||
return Calamares::ModuleManager::instance()->requirementsModel();
|
auto* manager = Calamares::ModuleManager::instance();
|
||||||
|
return manager ? manager->requirementsModel() : nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
QAbstractItemModel*
|
QAbstractItemModel*
|
||||||
@ -150,8 +154,6 @@ Config::initLanguages()
|
|||||||
{
|
{
|
||||||
QString name = m_languages->locale( matchedLocaleIndex ).name();
|
QString name = m_languages->locale( matchedLocaleIndex ).name();
|
||||||
cDebug() << Logger::SubEntry << "Matched with index" << matchedLocaleIndex << name;
|
cDebug() << Logger::SubEntry << "Matched with index" << matchedLocaleIndex << name;
|
||||||
|
|
||||||
CalamaresUtils::installTranslator( name, Calamares::Branding::instance()->translationsDirectory() );
|
|
||||||
setLocaleIndex( matchedLocaleIndex );
|
setLocaleIndex( matchedLocaleIndex );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -190,7 +192,8 @@ Config::setLocaleIndex( int index )
|
|||||||
cDebug() << "Index" << index << "Selected locale" << selectedLocale;
|
cDebug() << "Index" << index << "Selected locale" << selectedLocale;
|
||||||
|
|
||||||
QLocale::setDefault( selectedLocale );
|
QLocale::setDefault( selectedLocale );
|
||||||
CalamaresUtils::installTranslator( selectedLocale, Calamares::Branding::instance()->translationsDirectory() );
|
const auto* branding = Calamares::Branding::instance();
|
||||||
|
CalamaresUtils::installTranslator( selectedLocale, branding ? branding->translationsDirectory() : QString() );
|
||||||
if ( Calamares::JobQueue::instance() && Calamares::JobQueue::instance()->globalStorage() )
|
if ( Calamares::JobQueue::instance() && Calamares::JobQueue::instance()->globalStorage() )
|
||||||
{
|
{
|
||||||
CalamaresUtils::Locale::insertGS( *Calamares::JobQueue::instance()->globalStorage(),
|
CalamaresUtils::Locale::insertGS( *Calamares::JobQueue::instance()->globalStorage(),
|
||||||
@ -240,17 +243,19 @@ Config::genericWelcomeMessage() const
|
|||||||
{
|
{
|
||||||
QString message;
|
QString message;
|
||||||
|
|
||||||
if ( Calamares::Settings::instance()->isSetupMode() )
|
const auto* settings = Calamares::Settings::instance();
|
||||||
|
const auto* branding = Calamares::Branding::instance();
|
||||||
|
const bool welcomeStyle = branding ? branding->welcomeStyleCalamares() : true;
|
||||||
|
|
||||||
|
if ( settings ? settings->isSetupMode() : false )
|
||||||
{
|
{
|
||||||
message = Calamares::Branding::instance()->welcomeStyleCalamares()
|
message = welcomeStyle ? tr( "<h1>Welcome to the Calamares setup program for %1</h1>" )
|
||||||
? tr( "<h1>Welcome to the Calamares setup program for %1</h1>" )
|
: tr( "<h1>Welcome to %1 setup</h1>" );
|
||||||
: tr( "<h1>Welcome to %1 setup</h1>" );
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
message = Calamares::Branding::instance()->welcomeStyleCalamares()
|
message = welcomeStyle ? tr( "<h1>Welcome to the Calamares installer for %1</h1>" )
|
||||||
? tr( "<h1>Welcome to the Calamares installer for %1</h1>" )
|
: tr( "<h1>Welcome to the %1 installer</h1>" );
|
||||||
: tr( "<h1>Welcome to the %1 installer</h1>" );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return message;
|
return message;
|
||||||
@ -393,4 +398,15 @@ Config::setConfigurationMap( const QVariantMap& configurationMap )
|
|||||||
|
|
||||||
::setLanguageIcon( this, configurationMap );
|
::setLanguageIcon( this, configurationMap );
|
||||||
::setGeoIP( this, configurationMap );
|
::setGeoIP( this, configurationMap );
|
||||||
|
|
||||||
|
if ( configurationMap.contains( "requirements" )
|
||||||
|
&& configurationMap.value( "requirements" ).type() == QVariant::Map )
|
||||||
|
{
|
||||||
|
m_requirementsChecker->setConfigurationMap( configurationMap.value( "requirements" ).toMap() );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cWarning() << "no valid requirements map found in welcome "
|
||||||
|
"module configuration.";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,8 @@
|
|||||||
#ifndef WELCOME_CONFIG_H
|
#ifndef WELCOME_CONFIG_H
|
||||||
#define WELCOME_CONFIG_H
|
#define WELCOME_CONFIG_H
|
||||||
|
|
||||||
|
#include "checker/GeneralRequirements.h"
|
||||||
|
|
||||||
#include "locale/LabelModel.h"
|
#include "locale/LabelModel.h"
|
||||||
#include "modulesystem/RequirementsModel.h"
|
#include "modulesystem/RequirementsModel.h"
|
||||||
|
|
||||||
@ -100,6 +102,9 @@ public slots:
|
|||||||
|
|
||||||
QAbstractItemModel* unsatisfiedRequirements() const;
|
QAbstractItemModel* unsatisfiedRequirements() const;
|
||||||
|
|
||||||
|
/// @brief Check the general requirements
|
||||||
|
Calamares::RequirementsList checkRequirements() const { return m_requirementsChecker->checkRequirements(); }
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void countryCodeChanged( QString countryCode );
|
void countryCodeChanged( QString countryCode );
|
||||||
void localeIndexChanged( int localeIndex );
|
void localeIndexChanged( int localeIndex );
|
||||||
@ -118,6 +123,7 @@ private:
|
|||||||
|
|
||||||
CalamaresUtils::Locale::LabelModel* m_languages = nullptr;
|
CalamaresUtils::Locale::LabelModel* m_languages = nullptr;
|
||||||
std::unique_ptr< QSortFilterProxyModel > m_filtermodel;
|
std::unique_ptr< QSortFilterProxyModel > m_filtermodel;
|
||||||
|
std::unique_ptr< GeneralRequirements > m_requirementsChecker;
|
||||||
|
|
||||||
QString m_languageIcon;
|
QString m_languageIcon;
|
||||||
QString m_countryCode;
|
QString m_countryCode;
|
||||||
|
116
src/modules/welcome/Tests.cpp
Normal file
116
src/modules/welcome/Tests.cpp
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
/* === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: 2021 Adriaan de Groot <groot@kde.org>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* Calamares is Free Software: see the License-Identifier above.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "Config.h"
|
||||||
|
|
||||||
|
#include "Branding.h"
|
||||||
|
#include "Settings.h"
|
||||||
|
#include "network/Manager.h"
|
||||||
|
#include "utils/CalamaresUtilsSystem.h"
|
||||||
|
#include "utils/Logger.h"
|
||||||
|
#include "utils/Yaml.h"
|
||||||
|
|
||||||
|
#include <QtTest/QtTest>
|
||||||
|
|
||||||
|
class WelcomeTests : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
WelcomeTests();
|
||||||
|
~WelcomeTests() override {}
|
||||||
|
|
||||||
|
private Q_SLOTS:
|
||||||
|
void initTestCase();
|
||||||
|
|
||||||
|
void testOneUrl();
|
||||||
|
void testUrls_data();
|
||||||
|
void testUrls();
|
||||||
|
};
|
||||||
|
|
||||||
|
WelcomeTests::WelcomeTests() {}
|
||||||
|
|
||||||
|
void
|
||||||
|
WelcomeTests::initTestCase()
|
||||||
|
{
|
||||||
|
Logger::setupLogLevel( Logger::LOGDEBUG );
|
||||||
|
cDebug() << "Welcome test started.";
|
||||||
|
|
||||||
|
// Ensure we have a system object, expect it to be a "bogus" one
|
||||||
|
CalamaresUtils::System* system = CalamaresUtils::System::instance();
|
||||||
|
QVERIFY( system );
|
||||||
|
cDebug() << Logger::SubEntry << "System @" << Logger::Pointer( system );
|
||||||
|
|
||||||
|
const auto* settings = Calamares::Settings::instance();
|
||||||
|
if ( !settings )
|
||||||
|
{
|
||||||
|
(void)new Calamares::Settings( true );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
WelcomeTests::testOneUrl()
|
||||||
|
{
|
||||||
|
Config c;
|
||||||
|
|
||||||
|
// BUILD_AS_TEST is the source-directory path
|
||||||
|
QString filename = QStringLiteral( "1a-checkinternet.conf" );
|
||||||
|
QFile fi( QString( "%1/tests/%2" ).arg( BUILD_AS_TEST, filename ) );
|
||||||
|
QVERIFY( fi.exists() );
|
||||||
|
|
||||||
|
bool ok = false;
|
||||||
|
const auto map = CalamaresUtils::loadYaml( fi, &ok );
|
||||||
|
QVERIFY( ok );
|
||||||
|
QVERIFY( map.count() > 0 );
|
||||||
|
QVERIFY( map.contains( "requirements" ) );
|
||||||
|
|
||||||
|
c.setConfigurationMap( map );
|
||||||
|
QCOMPARE( CalamaresUtils::Network::Manager::instance().getCheckInternetUrls().count(), 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
WelcomeTests::testUrls_data()
|
||||||
|
{
|
||||||
|
QTest::addColumn< QString >( "filename" );
|
||||||
|
QTest::addColumn< int >( "result" );
|
||||||
|
|
||||||
|
QTest::newRow( "one " ) << QString( "1a-checkinternet.conf" ) << 1;
|
||||||
|
QTest::newRow( "none " ) << QString( "1b-checkinternet.conf" ) << 0;
|
||||||
|
QTest::newRow( "blank" ) << QString( "1c-checkinternet.conf" ) << 0;
|
||||||
|
QTest::newRow( "bogus" ) << QString( "1d-checkinternet.conf" ) << 0;
|
||||||
|
QTest::newRow( "[] " ) << QString( "1e-checkinternet.conf" ) << 0;
|
||||||
|
QTest::newRow( "-3 " ) << QString( "1f-checkinternet.conf" ) << 3;
|
||||||
|
QTest::newRow( "[3] " ) << QString( "1g-checkinternet.conf" ) << 3;
|
||||||
|
QTest::newRow( "some " ) << QString( "1h-checkinternet.conf" ) << 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
WelcomeTests::testUrls()
|
||||||
|
{
|
||||||
|
QFETCH( QString, filename );
|
||||||
|
QFETCH( int, result );
|
||||||
|
|
||||||
|
Config c;
|
||||||
|
|
||||||
|
// BUILD_AS_TEST is the source-directory path
|
||||||
|
QFile fi( QString( "%1/tests/%2" ).arg( BUILD_AS_TEST, filename ) );
|
||||||
|
QVERIFY( fi.exists() );
|
||||||
|
|
||||||
|
bool ok = false;
|
||||||
|
const auto map = CalamaresUtils::loadYaml( fi, &ok );
|
||||||
|
QVERIFY( ok );
|
||||||
|
|
||||||
|
c.setConfigurationMap( map );
|
||||||
|
QCOMPARE( CalamaresUtils::Network::Manager::instance().getCheckInternetUrls().count(), result );
|
||||||
|
}
|
||||||
|
|
||||||
|
QTEST_GUILESS_MAIN( WelcomeTests )
|
||||||
|
|
||||||
|
#include "utils/moc-warnings.h"
|
||||||
|
|
||||||
|
#include "Tests.moc"
|
@ -12,7 +12,6 @@
|
|||||||
|
|
||||||
#include "Config.h"
|
#include "Config.h"
|
||||||
#include "WelcomePage.h"
|
#include "WelcomePage.h"
|
||||||
#include "checker/GeneralRequirements.h"
|
|
||||||
|
|
||||||
#include "Branding.h"
|
#include "Branding.h"
|
||||||
#include "modulesystem/ModuleManager.h"
|
#include "modulesystem/ModuleManager.h"
|
||||||
@ -25,7 +24,6 @@ WelcomeViewStep::WelcomeViewStep( QObject* parent )
|
|||||||
: Calamares::ViewStep( parent )
|
: Calamares::ViewStep( parent )
|
||||||
, m_conf( new Config( this ) )
|
, m_conf( new Config( this ) )
|
||||||
, m_widget( new WelcomePage( m_conf ) )
|
, m_widget( new WelcomePage( m_conf ) )
|
||||||
, m_requirementsChecker( new GeneralRequirements( this ) )
|
|
||||||
{
|
{
|
||||||
connect( Calamares::ModuleManager::instance(),
|
connect( Calamares::ModuleManager::instance(),
|
||||||
&Calamares::ModuleManager::requirementsComplete,
|
&Calamares::ModuleManager::requirementsComplete,
|
||||||
@ -96,17 +94,6 @@ WelcomeViewStep::setConfigurationMap( const QVariantMap& configurationMap )
|
|||||||
{
|
{
|
||||||
m_conf->setConfigurationMap( configurationMap );
|
m_conf->setConfigurationMap( configurationMap );
|
||||||
|
|
||||||
if ( configurationMap.contains( "requirements" )
|
|
||||||
&& configurationMap.value( "requirements" ).type() == QVariant::Map )
|
|
||||||
{
|
|
||||||
m_requirementsChecker->setConfigurationMap( configurationMap.value( "requirements" ).toMap() );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
cWarning() << "no valid requirements map found in welcome "
|
|
||||||
"module configuration.";
|
|
||||||
}
|
|
||||||
|
|
||||||
//here init the qml or qwidgets needed bits
|
//here init the qml or qwidgets needed bits
|
||||||
m_widget->init();
|
m_widget->init();
|
||||||
}
|
}
|
||||||
@ -114,5 +101,5 @@ WelcomeViewStep::setConfigurationMap( const QVariantMap& configurationMap )
|
|||||||
Calamares::RequirementsList
|
Calamares::RequirementsList
|
||||||
WelcomeViewStep::checkRequirements()
|
WelcomeViewStep::checkRequirements()
|
||||||
{
|
{
|
||||||
return m_requirementsChecker->checkRequirements();
|
return m_conf->checkRequirements();
|
||||||
}
|
}
|
||||||
|
@ -66,7 +66,6 @@ public:
|
|||||||
private:
|
private:
|
||||||
Config* m_conf;
|
Config* m_conf;
|
||||||
WelcomePage* m_widget;
|
WelcomePage* m_widget;
|
||||||
GeneralRequirements* m_requirementsChecker;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
CALAMARES_PLUGIN_FACTORY_DECLARATION( WelcomeViewStepFactory )
|
CALAMARES_PLUGIN_FACTORY_DECLARATION( WelcomeViewStepFactory )
|
||||||
|
@ -215,6 +215,57 @@ GeneralRequirements::checkRequirements()
|
|||||||
return checkEntries;
|
return checkEntries;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @brief Loads the check-internel URLs
|
||||||
|
*
|
||||||
|
* There may be zero or one or more URLs specified; returns
|
||||||
|
* @c true if the configuration is incomplete or damaged in some way.
|
||||||
|
*/
|
||||||
|
static bool
|
||||||
|
getCheckInternetUrls( const QVariantMap& configurationMap )
|
||||||
|
{
|
||||||
|
const QString exampleUrl = QStringLiteral( "http://example.com" );
|
||||||
|
|
||||||
|
bool incomplete = false;
|
||||||
|
QStringList checkInternetSetting = CalamaresUtils::getStringList( configurationMap, "internetCheckUrl" );
|
||||||
|
if ( !checkInternetSetting.isEmpty() )
|
||||||
|
{
|
||||||
|
QVector< QUrl > urls;
|
||||||
|
for ( const auto& urlString : qAsConst( checkInternetSetting ) )
|
||||||
|
{
|
||||||
|
QUrl url( urlString.trimmed() );
|
||||||
|
if ( url.isValid() )
|
||||||
|
{
|
||||||
|
urls.append( url );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cWarning() << "GeneralRequirements entry 'internetCheckUrl' in welcome.conf contains invalid"
|
||||||
|
<< urlString;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( urls.empty() )
|
||||||
|
{
|
||||||
|
cWarning() << "GeneralRequirements entry 'internetCheckUrl' contains no valid URLs,"
|
||||||
|
<< "reverting to default (http://example.com).";
|
||||||
|
CalamaresUtils::Network::Manager::instance().setCheckHasInternetUrl( QUrl( exampleUrl ) );
|
||||||
|
incomplete = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
CalamaresUtils::Network::Manager::instance().setCheckHasInternetUrl( urls );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cWarning() << "GeneralRequirements entry 'internetCheckUrl' is undefined in welcome.conf,"
|
||||||
|
"reverting to default (http://example.com).";
|
||||||
|
CalamaresUtils::Network::Manager::instance().setCheckHasInternetUrl( QUrl( exampleUrl ) );
|
||||||
|
incomplete = true;
|
||||||
|
}
|
||||||
|
return incomplete;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
GeneralRequirements::setConfigurationMap( const QVariantMap& configurationMap )
|
GeneralRequirements::setConfigurationMap( const QVariantMap& configurationMap )
|
||||||
@ -302,30 +353,7 @@ GeneralRequirements::setConfigurationMap( const QVariantMap& configurationMap )
|
|||||||
incompleteConfiguration = true;
|
incompleteConfiguration = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
QUrl checkInternetUrl;
|
incompleteConfiguration |= getCheckInternetUrls( configurationMap );
|
||||||
QString checkInternetSetting = CalamaresUtils::getString( configurationMap, "internetCheckUrl" );
|
|
||||||
if ( !checkInternetSetting.isEmpty() )
|
|
||||||
{
|
|
||||||
checkInternetUrl = QUrl( checkInternetSetting.trimmed() );
|
|
||||||
if ( !checkInternetUrl.isValid() )
|
|
||||||
{
|
|
||||||
cWarning() << "GeneralRequirements entry 'internetCheckUrl' is invalid in welcome.conf"
|
|
||||||
<< checkInternetSetting << "reverting to default (http://example.com).";
|
|
||||||
checkInternetUrl = QUrl( "http://example.com" );
|
|
||||||
incompleteConfiguration = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
cWarning() << "GeneralRequirements entry 'internetCheckUrl' is undefined in welcome.conf,"
|
|
||||||
"reverting to default (http://example.com).";
|
|
||||||
checkInternetUrl = "http://example.com";
|
|
||||||
incompleteConfiguration = true;
|
|
||||||
}
|
|
||||||
if ( checkInternetUrl.isValid() )
|
|
||||||
{
|
|
||||||
CalamaresUtils::Network::Manager::instance().setCheckHasInternetUrl( checkInternetUrl );
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( incompleteConfiguration )
|
if ( incompleteConfiguration )
|
||||||
{
|
{
|
||||||
|
3
src/modules/welcome/tests/1a-checkinternet.conf
Normal file
3
src/modules/welcome/tests/1a-checkinternet.conf
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
---
|
||||||
|
requirements:
|
||||||
|
internetCheckUrl: http://example.com
|
3
src/modules/welcome/tests/1b-checkinternet.conf
Normal file
3
src/modules/welcome/tests/1b-checkinternet.conf
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Nothing at all
|
||||||
|
---
|
||||||
|
bogus: 1
|
4
src/modules/welcome/tests/1c-checkinternet.conf
Normal file
4
src/modules/welcome/tests/1c-checkinternet.conf
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
# Set to blank
|
||||||
|
---
|
||||||
|
requirements:
|
||||||
|
internetCheckUrl: ""
|
4
src/modules/welcome/tests/1d-checkinternet.conf
Normal file
4
src/modules/welcome/tests/1d-checkinternet.conf
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
# Set to something broken
|
||||||
|
---
|
||||||
|
requirements:
|
||||||
|
internetCheckUrl: false
|
4
src/modules/welcome/tests/1e-checkinternet.conf
Normal file
4
src/modules/welcome/tests/1e-checkinternet.conf
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
# Empty list
|
||||||
|
---
|
||||||
|
requirements:
|
||||||
|
internetCheckUrl: []
|
6
src/modules/welcome/tests/1f-checkinternet.conf
Normal file
6
src/modules/welcome/tests/1f-checkinternet.conf
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
requirements:
|
||||||
|
internetCheckUrl:
|
||||||
|
- http://example.com
|
||||||
|
- http://bogus.example.com
|
||||||
|
- http://nonexistent.example.com
|
3
src/modules/welcome/tests/1g-checkinternet.conf
Normal file
3
src/modules/welcome/tests/1g-checkinternet.conf
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
---
|
||||||
|
requirements:
|
||||||
|
internetCheckUrl: [ http://example.com, http://bogus.example.com, http://nonexistent.example.com ]
|
8
src/modules/welcome/tests/1h-checkinternet.conf
Normal file
8
src/modules/welcome/tests/1h-checkinternet.conf
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
# "0" is a valid URL (?) but "" is not
|
||||||
|
---
|
||||||
|
requirements:
|
||||||
|
internetCheckUrl:
|
||||||
|
- http://example.com
|
||||||
|
- 0
|
||||||
|
- ""
|
||||||
|
- http://nonexistent.example.com
|
@ -43,6 +43,21 @@ requirements:
|
|||||||
#
|
#
|
||||||
# The URL is only used if "internet" is in the *check* list below.
|
# The URL is only used if "internet" is in the *check* list below.
|
||||||
internetCheckUrl: http://example.com
|
internetCheckUrl: http://example.com
|
||||||
|
#
|
||||||
|
# This may be a single URL, or a list or URLs, in which case the
|
||||||
|
# URLs will be checked one-by-one; if any of them returns data,
|
||||||
|
# internet is assumed to be OK. This can be used to check via
|
||||||
|
# a number of places, where some domains may be down or blocked.
|
||||||
|
#
|
||||||
|
# To use a list of URLs, just use YAML list syntax (e.g.
|
||||||
|
#
|
||||||
|
# internetCheckUrl:
|
||||||
|
# - http://www.kde.org
|
||||||
|
# - http://www.freebsd.org
|
||||||
|
#
|
||||||
|
# or short-form
|
||||||
|
#
|
||||||
|
# internetCheckUrl: [ http://www.kde.org, http://www.freebsd.org ]
|
||||||
|
|
||||||
# List conditions to check. Each listed condition will be
|
# List conditions to check. Each listed condition will be
|
||||||
# probed in some way, and yields true or false according to
|
# probed in some way, and yields true or false according to
|
||||||
|
@ -26,7 +26,6 @@ CALAMARES_PLUGIN_FACTORY_DEFINITION( WelcomeQmlViewStepFactory, registerPlugin<
|
|||||||
WelcomeQmlViewStep::WelcomeQmlViewStep( QObject* parent )
|
WelcomeQmlViewStep::WelcomeQmlViewStep( QObject* parent )
|
||||||
: Calamares::QmlViewStep( parent )
|
: Calamares::QmlViewStep( parent )
|
||||||
, m_config( new Config( this ) )
|
, m_config( new Config( this ) )
|
||||||
, m_requirementsChecker( new GeneralRequirements( this ) )
|
|
||||||
{
|
{
|
||||||
connect( Calamares::ModuleManager::instance(),
|
connect( Calamares::ModuleManager::instance(),
|
||||||
&Calamares::ModuleManager::requirementsComplete,
|
&Calamares::ModuleManager::requirementsComplete,
|
||||||
@ -58,7 +57,6 @@ WelcomeQmlViewStep::isBackEnabled() const
|
|||||||
bool
|
bool
|
||||||
WelcomeQmlViewStep::isAtBeginning() const
|
WelcomeQmlViewStep::isAtBeginning() const
|
||||||
{
|
{
|
||||||
// TODO: adjust to "pages" in the QML
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -66,7 +64,6 @@ WelcomeQmlViewStep::isAtBeginning() const
|
|||||||
bool
|
bool
|
||||||
WelcomeQmlViewStep::isAtEnd() const
|
WelcomeQmlViewStep::isAtEnd() const
|
||||||
{
|
{
|
||||||
// TODO: adjust to "pages" in the QML
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -81,26 +78,13 @@ void
|
|||||||
WelcomeQmlViewStep::setConfigurationMap( const QVariantMap& configurationMap )
|
WelcomeQmlViewStep::setConfigurationMap( const QVariantMap& configurationMap )
|
||||||
{
|
{
|
||||||
m_config->setConfigurationMap( configurationMap );
|
m_config->setConfigurationMap( configurationMap );
|
||||||
|
|
||||||
if ( configurationMap.contains( "requirements" )
|
|
||||||
&& configurationMap.value( "requirements" ).type() == QVariant::Map )
|
|
||||||
{
|
|
||||||
m_requirementsChecker->setConfigurationMap( configurationMap.value( "requirements" ).toMap() );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
cWarning() << "no valid requirements map found in welcomeq "
|
|
||||||
"module configuration.";
|
|
||||||
}
|
|
||||||
|
|
||||||
Calamares::QmlViewStep::setConfigurationMap( configurationMap ); // call parent implementation last
|
Calamares::QmlViewStep::setConfigurationMap( configurationMap ); // call parent implementation last
|
||||||
setContextProperty( "Welcome", m_config );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Calamares::RequirementsList
|
Calamares::RequirementsList
|
||||||
WelcomeQmlViewStep::checkRequirements()
|
WelcomeQmlViewStep::checkRequirements()
|
||||||
{
|
{
|
||||||
return m_requirementsChecker->checkRequirements();
|
return m_config->checkRequirements();
|
||||||
}
|
}
|
||||||
|
|
||||||
QObject*
|
QObject*
|
||||||
|
@ -29,9 +29,7 @@ class Handler;
|
|||||||
}
|
}
|
||||||
} // namespace CalamaresUtils
|
} // namespace CalamaresUtils
|
||||||
|
|
||||||
class GeneralRequirements;
|
|
||||||
|
|
||||||
// TODO: Needs a generic Calamares::QmlViewStep as base class
|
|
||||||
// TODO: refactor and move what makes sense to base class
|
// TODO: refactor and move what makes sense to base class
|
||||||
class PLUGINDLLEXPORT WelcomeQmlViewStep : public Calamares::QmlViewStep
|
class PLUGINDLLEXPORT WelcomeQmlViewStep : public Calamares::QmlViewStep
|
||||||
{
|
{
|
||||||
@ -65,7 +63,6 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
Config* m_config;
|
Config* m_config;
|
||||||
GeneralRequirements* m_requirementsChecker;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
CALAMARES_PLUGIN_FACTORY_DECLARATION( WelcomeQmlViewStepFactory )
|
CALAMARES_PLUGIN_FACTORY_DECLARATION( WelcomeQmlViewStepFactory )
|
||||||
|
Loading…
Reference in New Issue
Block a user