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