[packagechooser] Add install-method to pick *packages* module
This commit is contained in:
parent
ed14c49a03
commit
5e77d65424
@ -15,11 +15,43 @@
|
|||||||
|
|
||||||
#include "GlobalStorage.h"
|
#include "GlobalStorage.h"
|
||||||
#include "JobQueue.h"
|
#include "JobQueue.h"
|
||||||
|
#include "packages/Globals.h"
|
||||||
#include "utils/Logger.h"
|
#include "utils/Logger.h"
|
||||||
#include "utils/Variant.h"
|
#include "utils/Variant.h"
|
||||||
|
|
||||||
|
const NamedEnumTable< PackageChooserMode >&
|
||||||
|
packageChooserModeNames()
|
||||||
|
{
|
||||||
|
static const NamedEnumTable< PackageChooserMode > names {
|
||||||
|
{ "optional", PackageChooserMode::Optional },
|
||||||
|
{ "required", PackageChooserMode::Required },
|
||||||
|
{ "optionalmultiple", PackageChooserMode::OptionalMultiple },
|
||||||
|
{ "requiredmultiple", PackageChooserMode::RequiredMultiple },
|
||||||
|
// and a bunch of aliases
|
||||||
|
{ "zero-or-one", PackageChooserMode::Optional },
|
||||||
|
{ "radio", PackageChooserMode::Required },
|
||||||
|
{ "one", PackageChooserMode::Required },
|
||||||
|
{ "set", PackageChooserMode::OptionalMultiple },
|
||||||
|
{ "zero-or-more", PackageChooserMode::OptionalMultiple },
|
||||||
|
{ "multiple", PackageChooserMode::RequiredMultiple },
|
||||||
|
{ "one-or-more", PackageChooserMode::RequiredMultiple }
|
||||||
|
};
|
||||||
|
return names;
|
||||||
|
}
|
||||||
|
|
||||||
Config::Config( const QString& defaultId, QObject* parent )
|
const NamedEnumTable< PackageChooserMethod >&
|
||||||
|
PackageChooserMethodNames()
|
||||||
|
{
|
||||||
|
static const NamedEnumTable< PackageChooserMethod > names {
|
||||||
|
{ "legacy", PackageChooserMethod::Legacy },
|
||||||
|
{ "custom", PackageChooserMethod::Legacy },
|
||||||
|
{ "contextualprocess", PackageChooserMethod::Legacy },
|
||||||
|
{ "packages", PackageChooserMethod::Packages },
|
||||||
|
};
|
||||||
|
return names;
|
||||||
|
}
|
||||||
|
|
||||||
|
Config::Config( const Calamares::ModuleSystem::InstanceKey& defaultId, QObject* parent )
|
||||||
: Calamares::ModuleSystem::Config( parent )
|
: Calamares::ModuleSystem::Config( parent )
|
||||||
, m_model( new PackageListModel( this ) )
|
, m_model( new PackageListModel( this ) )
|
||||||
, m_mode( PackageChooserMode::Required )
|
, m_mode( PackageChooserMode::Required )
|
||||||
@ -44,14 +76,14 @@ Config::introductionPackage() const
|
|||||||
static PackageItem* defaultIntroduction = nullptr;
|
static PackageItem* defaultIntroduction = nullptr;
|
||||||
if ( !defaultIntroduction )
|
if ( !defaultIntroduction )
|
||||||
{
|
{
|
||||||
defaultIntroduction = new PackageItem(
|
const auto name = QT_TR_NOOP( "Package Selection" );
|
||||||
QString(),
|
const auto description
|
||||||
QT_TR_NOOP( "Package Selection" ),
|
= QT_TR_NOOP( "Please pick a product from the list. The selected product will be installed." );
|
||||||
QT_TR_NOOP( "Please pick a product from the list. The selected product will be installed." ) );
|
defaultIntroduction = new PackageItem( QString(), name, description );
|
||||||
defaultIntroduction->screenshot = QPixmap( QStringLiteral( ":/images/no-selection.png" ) );
|
defaultIntroduction->screenshot = QPixmap( QStringLiteral( ":/images/no-selection.png" ) );
|
||||||
// TODO: enable better translation
|
defaultIntroduction->name = CalamaresUtils::Locale::TranslatedString( name, metaObject()->className() );
|
||||||
// defaultIntroduction->name.setContext( metaObject()->className() );
|
defaultIntroduction->description
|
||||||
// defaultIntroduction->description.setContext( metaObject()->className() );
|
= CalamaresUtils::Locale::TranslatedString( description, metaObject()->className() );
|
||||||
}
|
}
|
||||||
return *defaultIntroduction;
|
return *defaultIntroduction;
|
||||||
}
|
}
|
||||||
@ -60,10 +92,23 @@ void
|
|||||||
Config::updateGlobalStorage( const QStringList& selected ) const
|
Config::updateGlobalStorage( const QStringList& selected ) const
|
||||||
{
|
{
|
||||||
QString key = QStringLiteral( "packagechooser_%1" ).arg( m_id );
|
QString key = QStringLiteral( "packagechooser_%1" ).arg( m_id );
|
||||||
QString value = selected.join( ',' );
|
|
||||||
Calamares::JobQueue::instance()->globalStorage()->insert( key, value );
|
|
||||||
|
|
||||||
cDebug() << "PackageChooser" << key << "selected" << value;
|
if ( m_method == PackageChooserMethod::Legacy )
|
||||||
|
{
|
||||||
|
QString value = selected.join( ',' );
|
||||||
|
Calamares::JobQueue::instance()->globalStorage()->insert( key, value );
|
||||||
|
|
||||||
|
cDebug() << "PackageChooser" << key << "selected" << value;
|
||||||
|
}
|
||||||
|
else if ( m_method == PackageChooserMethod::Packages )
|
||||||
|
{
|
||||||
|
CalamaresUtils::Packages::setGSPackageAdditions(
|
||||||
|
Calamares::JobQueue::instance()->globalStorage(), m_defaultId, selected );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cWarning() << "Unknown packagechooser method" << smash( m_method );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -142,7 +187,7 @@ Config::setConfigurationMap( const QVariantMap& configurationMap )
|
|||||||
m_id = CalamaresUtils::getString( configurationMap, "id" );
|
m_id = CalamaresUtils::getString( configurationMap, "id" );
|
||||||
if ( m_id.isEmpty() )
|
if ( m_id.isEmpty() )
|
||||||
{
|
{
|
||||||
m_id = m_defaultId;
|
m_id = m_defaultId.id();
|
||||||
}
|
}
|
||||||
|
|
||||||
m_defaultModelIndex = QModelIndex();
|
m_defaultModelIndex = QModelIndex();
|
||||||
|
@ -13,15 +13,34 @@
|
|||||||
#include "PackageModel.h"
|
#include "PackageModel.h"
|
||||||
|
|
||||||
#include "modulesystem/Config.h"
|
#include "modulesystem/Config.h"
|
||||||
|
#include "modulesystem/InstanceKey.h"
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
|
enum class PackageChooserMode
|
||||||
|
{
|
||||||
|
Optional, // zero or one
|
||||||
|
Required, // exactly one
|
||||||
|
OptionalMultiple, // zero or more
|
||||||
|
RequiredMultiple // one or more
|
||||||
|
};
|
||||||
|
|
||||||
|
const NamedEnumTable< PackageChooserMode >& packageChooserModeNames();
|
||||||
|
|
||||||
|
enum class PackageChooserMethod
|
||||||
|
{
|
||||||
|
Legacy, // use contextualprocess or other custom
|
||||||
|
Packages, // use the packages module
|
||||||
|
};
|
||||||
|
|
||||||
|
const NamedEnumTable< PackageChooserMethod >& PackageChooserMethodNames();
|
||||||
|
|
||||||
class Config : public Calamares::ModuleSystem::Config
|
class Config : public Calamares::ModuleSystem::Config
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Config( const QString& defaultId, QObject* parent = nullptr );
|
Config( const Calamares::ModuleSystem::InstanceKey& defaultId, QObject* parent = nullptr );
|
||||||
~Config() override;
|
~Config() override;
|
||||||
|
|
||||||
void setConfigurationMap( const QVariantMap& ) override;
|
void setConfigurationMap( const QVariantMap& ) override;
|
||||||
@ -51,10 +70,14 @@ private:
|
|||||||
PackageListModel* m_model = nullptr;
|
PackageListModel* m_model = nullptr;
|
||||||
QModelIndex m_defaultModelIndex;
|
QModelIndex m_defaultModelIndex;
|
||||||
|
|
||||||
// Configuration
|
/// Selection mode for this module
|
||||||
PackageChooserMode m_mode = PackageChooserMode::Optional;
|
PackageChooserMode m_mode = PackageChooserMode::Optional;
|
||||||
|
/// How this module stores to GS
|
||||||
|
PackageChooserMethod m_method = PackageChooserMethod::Legacy;
|
||||||
|
/// Id (used to identify settings from this module in GS)
|
||||||
QString m_id;
|
QString m_id;
|
||||||
QString m_defaultId;
|
/// Value to use for id if none is set in the config file
|
||||||
|
Calamares::ModuleSystem::InstanceKey m_defaultId;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
#ifndef PACKAGECHOOSERPAGE_H
|
#ifndef PACKAGECHOOSERPAGE_H
|
||||||
#define PACKAGECHOOSERPAGE_H
|
#define PACKAGECHOOSERPAGE_H
|
||||||
|
|
||||||
|
#include "Config.h"
|
||||||
#include "PackageModel.h"
|
#include "PackageModel.h"
|
||||||
|
|
||||||
#include <QAbstractItemModel>
|
#include <QAbstractItemModel>
|
||||||
|
@ -37,7 +37,7 @@ CALAMARES_PLUGIN_FACTORY_DEFINITION( PackageChooserViewStepFactory, registerPlug
|
|||||||
|
|
||||||
PackageChooserViewStep::PackageChooserViewStep( QObject* parent )
|
PackageChooserViewStep::PackageChooserViewStep( QObject* parent )
|
||||||
: Calamares::ViewStep( parent )
|
: Calamares::ViewStep( parent )
|
||||||
, m_config( new Config( moduleInstanceKey().id(), this ) )
|
, m_config( new Config( moduleInstanceKey(), this ) )
|
||||||
, m_widget( nullptr )
|
, m_widget( nullptr )
|
||||||
, m_stepName( nullptr )
|
, m_stepName( nullptr )
|
||||||
{
|
{
|
||||||
|
@ -12,26 +12,6 @@
|
|||||||
#include "utils/Logger.h"
|
#include "utils/Logger.h"
|
||||||
#include "utils/Variant.h"
|
#include "utils/Variant.h"
|
||||||
|
|
||||||
const NamedEnumTable< PackageChooserMode >&
|
|
||||||
packageChooserModeNames()
|
|
||||||
{
|
|
||||||
static const NamedEnumTable< PackageChooserMode > names {
|
|
||||||
{ "optional", PackageChooserMode::Optional },
|
|
||||||
{ "required", PackageChooserMode::Required },
|
|
||||||
{ "optionalmultiple", PackageChooserMode::OptionalMultiple },
|
|
||||||
{ "requiredmultiple", PackageChooserMode::RequiredMultiple },
|
|
||||||
// and a bunch of aliases
|
|
||||||
{ "zero-or-one", PackageChooserMode::Optional },
|
|
||||||
{ "radio", PackageChooserMode::Required },
|
|
||||||
{ "one", PackageChooserMode::Required },
|
|
||||||
{ "set", PackageChooserMode::OptionalMultiple },
|
|
||||||
{ "zero-or-more", PackageChooserMode::OptionalMultiple },
|
|
||||||
{ "multiple", PackageChooserMode::RequiredMultiple },
|
|
||||||
{ "one-or-more", PackageChooserMode::RequiredMultiple }
|
|
||||||
};
|
|
||||||
return names;
|
|
||||||
}
|
|
||||||
|
|
||||||
PackageItem::PackageItem() {}
|
PackageItem::PackageItem() {}
|
||||||
|
|
||||||
PackageItem::PackageItem( const QString& a_id, const QString& a_name, const QString& a_description )
|
PackageItem::PackageItem( const QString& a_id, const QString& a_name, const QString& a_description )
|
||||||
|
@ -18,15 +18,6 @@
|
|||||||
#include <QPixmap>
|
#include <QPixmap>
|
||||||
#include <QVector>
|
#include <QVector>
|
||||||
|
|
||||||
enum class PackageChooserMode
|
|
||||||
{
|
|
||||||
Optional, // zero or one
|
|
||||||
Required, // exactly one
|
|
||||||
OptionalMultiple, // zero or more
|
|
||||||
RequiredMultiple // one or more
|
|
||||||
};
|
|
||||||
|
|
||||||
const NamedEnumTable< PackageChooserMode >& packageChooserModeNames();
|
|
||||||
|
|
||||||
struct PackageItem
|
struct PackageItem
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user