[welcome] Support GeoIP country lookup
This commit is contained in:
parent
44559d24bd
commit
cb7c38daba
@ -22,10 +22,12 @@
|
||||
#include "WelcomePage.h"
|
||||
#include "checker/GeneralRequirements.h"
|
||||
|
||||
#include "geoip/Handler.h"
|
||||
#include "modulesystem/ModuleManager.h"
|
||||
#include "utils/Logger.h"
|
||||
#include "utils/Variant.h"
|
||||
|
||||
#include <QFutureWatcher>
|
||||
#include <QVariant>
|
||||
|
||||
CALAMARES_PLUGIN_FACTORY_DEFINITION( WelcomeViewStepFactory, registerPlugin<WelcomeViewStep>(); )
|
||||
@ -112,6 +114,26 @@ WelcomeViewStep::setConfigurationMap( const QVariantMap& configurationMap )
|
||||
else
|
||||
cWarning() << "no valid requirements map found in welcome "
|
||||
"module configuration.";
|
||||
|
||||
bool ok = false;
|
||||
QVariantMap geoip = CalamaresUtils::getSubMap( configurationMap, "geoip", ok );
|
||||
if ( ok )
|
||||
{
|
||||
using FWString = QFutureWatcher< QString >;
|
||||
|
||||
auto* handler = new CalamaresUtils::GeoIP::Handler(
|
||||
CalamaresUtils::getString( geoip, "style" ),
|
||||
CalamaresUtils::getString( geoip, "url" ),
|
||||
CalamaresUtils::getString( geoip, "selector" ) );
|
||||
auto* future = new FWString();
|
||||
connect( future, &FWString::finished, [f=future, h=handler]()
|
||||
{
|
||||
cDebug() << "GeoIP result for welcome=" << f->future().result();
|
||||
f->deleteLater();
|
||||
delete h;
|
||||
} );
|
||||
future->setFuture( handler->queryRaw() );
|
||||
}
|
||||
}
|
||||
|
||||
Calamares::RequirementsList WelcomeViewStep::checkRequirements()
|
||||
|
@ -47,3 +47,16 @@ requirements:
|
||||
# - storage
|
||||
- ram
|
||||
# - root
|
||||
|
||||
# GeoIP checking
|
||||
#
|
||||
# This can be used to pre-select a language based on the country
|
||||
# the user is currently in. It *assumes* that there's internet
|
||||
# connectivity, though. Configuration is like in the locale module,
|
||||
# but remember to use a URL that returns full data **and** to
|
||||
# use a selector that will pick the country, not the timezone.
|
||||
|
||||
geoip:
|
||||
style: "xml"
|
||||
url: "https://geoip.kde.org/v1/ubiquity" # extended XML format
|
||||
selector: "CountryCode" # blank uses default, which is wrong
|
||||
|
Loading…
Reference in New Issue
Block a user