[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

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

View File

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

View File

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