[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 );
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…
Cancel
Save