[packagechooser] Support multiple selection modes
This commit is contained in:
parent
dc5cdbb38c
commit
a32dcdad86
@ -25,7 +25,7 @@
|
||||
|
||||
#include <QLabel>
|
||||
|
||||
PackageChooserPage::PackageChooserPage( QWidget* parent )
|
||||
PackageChooserPage::PackageChooserPage( PackageChooserMode mode, QWidget* parent )
|
||||
: QWidget( parent )
|
||||
, ui( new Ui::PackageChooserPage )
|
||||
, m_introduction( QString(),
|
||||
@ -35,6 +35,16 @@ PackageChooserPage::PackageChooserPage( QWidget* parent )
|
||||
{
|
||||
ui->setupUi( this );
|
||||
CALAMARES_RETRANSLATE( updateLabels(); )
|
||||
|
||||
switch( mode )
|
||||
{
|
||||
case PackageChooserMode::Optional:
|
||||
case PackageChooserMode::Exclusive:
|
||||
ui->products->setSelectionMode( QAbstractItemView::SingleSelection );
|
||||
case PackageChooserMode::Multiple:
|
||||
case PackageChooserMode::RequiredMultiple:
|
||||
ui->products->setSelectionMode( QAbstractItemView::ExtendedSelection );
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -33,7 +33,7 @@ class PackageChooserPage : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit PackageChooserPage( QWidget* parent = nullptr );
|
||||
explicit PackageChooserPage( PackageChooserMode mode, QWidget* parent = nullptr );
|
||||
|
||||
void setModel( QAbstractItemModel* model );
|
||||
|
||||
|
@ -37,6 +37,7 @@ PackageChooserViewStep::PackageChooserViewStep( QObject* parent )
|
||||
: Calamares::ViewStep( parent )
|
||||
, m_widget( nullptr )
|
||||
, m_model( nullptr )
|
||||
, m_mode( PackageChooserMode::Optional )
|
||||
{
|
||||
emit nextStatusChanged( false );
|
||||
}
|
||||
@ -64,7 +65,7 @@ PackageChooserViewStep::widget()
|
||||
{
|
||||
if ( !m_widget )
|
||||
{
|
||||
m_widget = new PackageChooserPage( nullptr );
|
||||
m_widget = new PackageChooserPage( m_mode, nullptr );
|
||||
if ( m_model )
|
||||
{
|
||||
hookupModel();
|
||||
@ -77,9 +78,36 @@ PackageChooserViewStep::widget()
|
||||
bool
|
||||
PackageChooserViewStep::isNextEnabled() const
|
||||
{
|
||||
if ( !m_model )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( !m_widget )
|
||||
{
|
||||
// No way to have changed anything
|
||||
return true;
|
||||
}
|
||||
|
||||
switch( m_mode )
|
||||
{
|
||||
case PackageChooserMode::Optional:
|
||||
// zero or one
|
||||
return false;
|
||||
case PackageChooserMode::Exclusive:
|
||||
// exactly one
|
||||
return false;
|
||||
case PackageChooserMode::Multiple:
|
||||
// zero or more
|
||||
return true;
|
||||
case PackageChooserMode::RequiredMultiple:
|
||||
// one or more
|
||||
return false;
|
||||
}
|
||||
|
||||
NOTREACHED return true;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
PackageChooserViewStep::isBackEnabled() const
|
||||
|
@ -23,6 +23,8 @@
|
||||
#include "utils/PluginFactory.h"
|
||||
#include "viewpages/ViewStep.h"
|
||||
|
||||
#include "PackageModel.h"
|
||||
|
||||
#include <QObject>
|
||||
#include <QUrl>
|
||||
#include <QVariantMap>
|
||||
@ -59,6 +61,7 @@ private:
|
||||
|
||||
PackageChooserPage* m_widget;
|
||||
PackageListModel* m_model;
|
||||
PackageChooserMode m_mode;
|
||||
};
|
||||
|
||||
CALAMARES_PLUGIN_FACTORY_DECLARATION( PackageChooserViewStepFactory )
|
||||
|
@ -24,6 +24,14 @@
|
||||
#include <QPixmap>
|
||||
#include <QVector>
|
||||
|
||||
enum class PackageChooserMode
|
||||
{
|
||||
Optional, // zero or one
|
||||
Exclusive, // exactly one
|
||||
Multiple, // zero or more
|
||||
RequiredMultiple // one or more
|
||||
};
|
||||
|
||||
struct PackageItem
|
||||
{
|
||||
QString id;
|
||||
|
Loading…
Reference in New Issue
Block a user