mirror of
https://github.com/parchlinux/calamares.git
synced 2025-02-24 19:05:46 -05:00
[libcalamares] Remove direct access to model internals
- This was just for the ResultsListWidget, which can also use normal role-based model access.
This commit is contained in:
parent
616fbb08f3
commit
0f5db0ba5e
2 changed files with 18 additions and 17 deletions
|
@ -59,11 +59,6 @@ public:
|
||||||
bool satisfiedRequirements() const { return m_satisfiedRequirements; }
|
bool satisfiedRequirements() const { return m_satisfiedRequirements; }
|
||||||
bool satisfiedMandatory() const { return m_satisfiedMandatory; }
|
bool satisfiedMandatory() const { return m_satisfiedMandatory; }
|
||||||
|
|
||||||
const Calamares::RequirementEntry& getEntry( int index ) const
|
|
||||||
{
|
|
||||||
return m_requirements.at( index );
|
|
||||||
}
|
|
||||||
|
|
||||||
void setRequirementsList( const Calamares::RequirementsList& requirements );
|
void setRequirementsList( const Calamares::RequirementsList& requirements );
|
||||||
|
|
||||||
QVariant data( const QModelIndex& index, int role ) const override;
|
QVariant data( const QModelIndex& index, int role ) const override;
|
||||||
|
|
|
@ -48,27 +48,29 @@ static void
|
||||||
createResultWidgets( QLayout* layout,
|
createResultWidgets( QLayout* layout,
|
||||||
QList< ResultWidget* >& resultWidgets,
|
QList< ResultWidget* >& resultWidgets,
|
||||||
const Calamares::RequirementsModel& model,
|
const Calamares::RequirementsModel& model,
|
||||||
std::function< bool( const Calamares::RequirementEntry& ) > predicate )
|
std::function< bool( const Calamares::RequirementsModel&, QModelIndex ) > predicate )
|
||||||
{
|
{
|
||||||
resultWidgets.clear();
|
resultWidgets.clear();
|
||||||
resultWidgets.reserve( model.count() );
|
resultWidgets.reserve( model.count() );
|
||||||
for ( auto i = 0; i < model.count(); i++ )
|
for ( auto i = 0; i < model.count(); i++ )
|
||||||
{
|
{
|
||||||
const auto& entry = model.getEntry( i );
|
const auto& index = model.index( i );
|
||||||
if ( !predicate( entry ) )
|
if ( !predicate( model, index ) )
|
||||||
{
|
{
|
||||||
resultWidgets.append( nullptr );
|
resultWidgets.append( nullptr );
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
ResultWidget* ciw = new ResultWidget( entry.satisfied, entry.mandatory );
|
const bool is_satisfied = model.data( index, Calamares::RequirementsModel::Satisfied ).toBool();
|
||||||
|
const bool is_mandatory = model.data( index, Calamares::RequirementsModel::Mandatory ).toBool();
|
||||||
|
ResultWidget* ciw = new ResultWidget( is_satisfied, is_mandatory );
|
||||||
layout->addWidget( ciw );
|
layout->addWidget( ciw );
|
||||||
ciw->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred );
|
ciw->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred );
|
||||||
|
|
||||||
ciw->setAutoFillBackground( true );
|
ciw->setAutoFillBackground( true );
|
||||||
QPalette pal( ciw->palette() );
|
QPalette pal( ciw->palette() );
|
||||||
QColor bgColor = pal.window().color();
|
QColor bgColor = pal.window().color();
|
||||||
int bgHue = ( entry.satisfied ) ? bgColor.hue() : ( entry.mandatory ) ? 0 : 60;
|
int bgHue = ( is_satisfied ) ? bgColor.hue() : ( is_mandatory ) ? 0 : 60;
|
||||||
bgColor.setHsv( bgHue, 64, bgColor.value() );
|
bgColor.setHsv( bgHue, 64, bgColor.value() );
|
||||||
pal.setColor( QPalette::Window, bgColor );
|
pal.setColor( QPalette::Window, bgColor );
|
||||||
ciw->setPalette( pal );
|
ciw->setPalette( pal );
|
||||||
|
@ -114,7 +116,9 @@ ResultsListDialog::ResultsListDialog( const Calamares::RequirementsModel& model,
|
||||||
m_title = new QLabel( this );
|
m_title = new QLabel( this );
|
||||||
|
|
||||||
createResultWidgets(
|
createResultWidgets(
|
||||||
entriesLayout, m_resultWidgets, model, []( const Calamares::RequirementEntry& e ) { return e.hasDetails(); } );
|
entriesLayout, m_resultWidgets, model, []( const Calamares::RequirementsModel& m, QModelIndex i ) {
|
||||||
|
return m.data( i, Calamares::RequirementsModel::HasDetails ).toBool();
|
||||||
|
} );
|
||||||
|
|
||||||
QDialogButtonBox* buttonBox = new QDialogButtonBox( QDialogButtonBox::Close, Qt::Horizontal, this );
|
QDialogButtonBox* buttonBox = new QDialogButtonBox( QDialogButtonBox::Close, Qt::Horizontal, this );
|
||||||
|
|
||||||
|
@ -130,7 +134,7 @@ ResultsListDialog::ResultsListDialog( const Calamares::RequirementsModel& model,
|
||||||
retranslate(); // Do it now to fill in the texts
|
retranslate(); // Do it now to fill in the texts
|
||||||
}
|
}
|
||||||
|
|
||||||
ResultsListDialog::~ResultsListDialog() { }
|
ResultsListDialog::~ResultsListDialog() {}
|
||||||
|
|
||||||
void
|
void
|
||||||
ResultsListDialog::retranslate()
|
ResultsListDialog::retranslate()
|
||||||
|
@ -140,10 +144,10 @@ ResultsListDialog::retranslate()
|
||||||
|
|
||||||
for ( auto i = 0; i < m_model.count(); i++ )
|
for ( auto i = 0; i < m_model.count(); i++ )
|
||||||
{
|
{
|
||||||
const auto& entry = m_model.getEntry( i );
|
|
||||||
if ( m_resultWidgets[ i ] )
|
if ( m_resultWidgets[ i ] )
|
||||||
{
|
{
|
||||||
m_resultWidgets[ i ]->setText( entry.enumerationText() );
|
m_resultWidgets[ i ]->setText(
|
||||||
|
m_model.data( m_model.index( i ), Calamares::RequirementsModel::Details ).toString() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -180,7 +184,9 @@ ResultsListWidget::ResultsListWidget( const Calamares::RequirementsModel& model,
|
||||||
// all *mandatory* entries are satisfied (gives errors if not).
|
// all *mandatory* entries are satisfied (gives errors if not).
|
||||||
|
|
||||||
const bool requirementsSatisfied = m_model.satisfiedRequirements();
|
const bool requirementsSatisfied = m_model.satisfiedRequirements();
|
||||||
auto isUnSatisfied = []( const Calamares::RequirementEntry& e ) { return !e.satisfied; };
|
auto isUnSatisfied = []( const Calamares::RequirementsModel& m, QModelIndex i ) {
|
||||||
|
return !m.data( i, Calamares::RequirementsModel::Satisfied ).toBool();
|
||||||
|
};
|
||||||
|
|
||||||
createResultWidgets( entriesLayout, m_resultWidgets, model, isUnSatisfied );
|
createResultWidgets( entriesLayout, m_resultWidgets, model, isUnSatisfied );
|
||||||
|
|
||||||
|
@ -240,10 +246,10 @@ ResultsListWidget::retranslate()
|
||||||
{
|
{
|
||||||
for ( auto i = 0; i < m_model.count(); i++ )
|
for ( auto i = 0; i < m_model.count(); i++ )
|
||||||
{
|
{
|
||||||
const auto& entry = m_model.getEntry( i );
|
|
||||||
if ( m_resultWidgets[ i ] )
|
if ( m_resultWidgets[ i ] )
|
||||||
{
|
{
|
||||||
m_resultWidgets[ i ]->setText( entry.negatedText() );
|
m_resultWidgets[ i ]->setText(
|
||||||
|
m_model.data( m_model.index( i ), Calamares::RequirementsModel::NegatedText ).toString() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue