[packagechooser] Add selection modes
- Introduce different selection modes (most don't work yet) - Use model data in the main widget
This commit is contained in:
parent
86e2e6242f
commit
2272d2ab43
@ -36,14 +36,14 @@ PackageChooserPage::PackageChooserPage( PackageChooserMode mode, QWidget* parent
|
||||
ui->setupUi( this );
|
||||
CALAMARES_RETRANSLATE( updateLabels(); )
|
||||
|
||||
switch( mode )
|
||||
switch ( mode )
|
||||
{
|
||||
case PackageChooserMode::Optional:
|
||||
case PackageChooserMode::Exclusive:
|
||||
ui->products->setSelectionMode( QAbstractItemView::SingleSelection );
|
||||
case PackageChooserMode::Multiple:
|
||||
case PackageChooserMode::RequiredMultiple:
|
||||
ui->products->setSelectionMode( QAbstractItemView::ExtendedSelection );
|
||||
case PackageChooserMode::Optional:
|
||||
case PackageChooserMode::Exclusive:
|
||||
ui->products->setSelectionMode( QAbstractItemView::SingleSelection );
|
||||
case PackageChooserMode::Multiple:
|
||||
case PackageChooserMode::RequiredMultiple:
|
||||
ui->products->setSelectionMode( QAbstractItemView::ExtendedSelection );
|
||||
}
|
||||
}
|
||||
|
||||
@ -58,9 +58,11 @@ PackageChooserPage::currentChanged( const QModelIndex& index )
|
||||
}
|
||||
else
|
||||
{
|
||||
ui->productName->setText( QString::number( index.row() ) );
|
||||
ui->productScreenshot->hide();
|
||||
ui->productDescription->setText( "derp" );
|
||||
const auto* model = ui->products->model();
|
||||
|
||||
ui->productName->setText( model->data( index, PackageListModel::NameRole ).toString() );
|
||||
ui->productScreenshot->setPixmap( model->data( index, PackageListModel::ScreenshotRole ).value< QPixmap >() );
|
||||
ui->productDescription->setText( model->data( index, PackageListModel::DescriptionRole ).toString() );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -93,20 +93,20 @@ PackageChooserViewStep::isNextEnabled() const
|
||||
return true;
|
||||
}
|
||||
|
||||
switch( m_mode )
|
||||
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;
|
||||
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;
|
||||
|
@ -83,10 +83,18 @@ PackageListModel::data( const QModelIndex& index, int role ) const
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
if ( role == Qt::DisplayRole )
|
||||
if ( role == Qt::DisplayRole /* Also PackageNameRole */ )
|
||||
{
|
||||
return m_packages[ row ].name;
|
||||
}
|
||||
else if ( role == DescriptionRole )
|
||||
{
|
||||
return m_packages[ row ].description;
|
||||
}
|
||||
else if ( role == ScreenshotRole )
|
||||
{
|
||||
return m_packages[ row ].screenshot;
|
||||
}
|
||||
|
||||
return QVariant();
|
||||
}
|
||||
|
@ -27,7 +27,7 @@
|
||||
enum class PackageChooserMode
|
||||
{
|
||||
Optional, // zero or one
|
||||
Exclusive, // exactly one
|
||||
Exclusive, // exactly one
|
||||
Multiple, // zero or more
|
||||
RequiredMultiple // one or more
|
||||
};
|
||||
@ -70,6 +70,13 @@ public:
|
||||
int rowCount( const QModelIndex& index ) const override;
|
||||
QVariant data( const QModelIndex& index, int role ) const override;
|
||||
|
||||
enum Roles : int
|
||||
{
|
||||
NameRole = Qt::DisplayRole,
|
||||
DescriptionRole = Qt::UserRole,
|
||||
ScreenshotRole
|
||||
};
|
||||
|
||||
private:
|
||||
PackageList m_packages;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user