[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:
Adriaan de Groot 2019-08-02 16:43:10 +02:00
parent 86e2e6242f
commit 2272d2ab43
4 changed files with 42 additions and 25 deletions

View File

@ -36,7 +36,7 @@ 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:
@ -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() );
} }
} }

View File

@ -93,7 +93,7 @@ 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

View File

@ -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();
} }

View File

@ -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;
}; };