[packagechooser] Add selection modes

- Introduce different selection modes (most don't work yet)
 - Use model data in the main widget
main
Adriaan de Groot 6 years ago
parent 86e2e6242f
commit 2272d2ab43

@ -36,14 +36,14 @@ PackageChooserPage::PackageChooserPage( PackageChooserMode mode, QWidget* parent
ui->setupUi( this ); ui->setupUi( this );
CALAMARES_RETRANSLATE( updateLabels(); ) CALAMARES_RETRANSLATE( updateLabels(); )
switch( mode ) switch ( mode )
{ {
case PackageChooserMode::Optional: case PackageChooserMode::Optional:
case PackageChooserMode::Exclusive: case PackageChooserMode::Exclusive:
ui->products->setSelectionMode( QAbstractItemView::SingleSelection ); ui->products->setSelectionMode( QAbstractItemView::SingleSelection );
case PackageChooserMode::Multiple: case PackageChooserMode::Multiple:
case PackageChooserMode::RequiredMultiple: case PackageChooserMode::RequiredMultiple:
ui->products->setSelectionMode( QAbstractItemView::ExtendedSelection ); ui->products->setSelectionMode( QAbstractItemView::ExtendedSelection );
} }
} }
@ -58,9 +58,11 @@ PackageChooserPage::currentChanged( const QModelIndex& index )
} }
else else
{ {
ui->productName->setText( QString::number( index.row() ) ); const auto* model = ui->products->model();
ui->productScreenshot->hide();
ui->productDescription->setText( "derp" ); 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; return true;
} }
switch( m_mode ) switch ( m_mode )
{ {
case PackageChooserMode::Optional: case PackageChooserMode::Optional:
// zero or one // zero or one
return false; return false;
case PackageChooserMode::Exclusive: case PackageChooserMode::Exclusive:
// exactly one // exactly one
return false; return false;
case PackageChooserMode::Multiple: case PackageChooserMode::Multiple:
// zero or more // zero or more
return true; return true;
case PackageChooserMode::RequiredMultiple: case PackageChooserMode::RequiredMultiple:
// one or more // one or more
return false; return false;
} }
NOTREACHED return true; NOTREACHED return true;

@ -83,10 +83,18 @@ PackageListModel::data( const QModelIndex& index, int role ) const
return QVariant(); return QVariant();
} }
if ( role == Qt::DisplayRole ) if ( role == Qt::DisplayRole /* Also PackageNameRole */ )
{ {
return m_packages[ row ].name; 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(); return QVariant();
} }

@ -27,7 +27,7 @@
enum class PackageChooserMode enum class PackageChooserMode
{ {
Optional, // zero or one Optional, // zero or one
Exclusive, // exactly one Exclusive, // exactly one
Multiple, // zero or more Multiple, // zero or more
RequiredMultiple // one or more RequiredMultiple // one or more
}; };
@ -70,6 +70,13 @@ public:
int rowCount( const QModelIndex& index ) const override; int rowCount( const QModelIndex& index ) const override;
QVariant data( const QModelIndex& index, int role ) const override; QVariant data( const QModelIndex& index, int role ) const override;
enum Roles : int
{
NameRole = Qt::DisplayRole,
DescriptionRole = Qt::UserRole,
ScreenshotRole
};
private: private:
PackageList m_packages; PackageList m_packages;
}; };

Loading…
Cancel
Save