[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 );
|
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…
Reference in New Issue
Block a user