[libcalamares] Clean up requirements model API
- don't need friends - made modify-the-model API public where it makes sense - improve naming
This commit is contained in:
parent
0b2af86ec9
commit
07f4ec529b
@ -32,7 +32,6 @@ RequirementsChecker::RequirementsChecker( QVector< Module* > modules, Requiremen
|
||||
, m_progressTimer( nullptr )
|
||||
, m_progressTimeouts( 0 )
|
||||
{
|
||||
m_model->clear();
|
||||
m_watchers.reserve( m_modules.count() );
|
||||
connect( this, &RequirementsChecker::requirementsProgress, model, &RequirementsModel::setProgressMessage );
|
||||
}
|
||||
@ -77,7 +76,7 @@ RequirementsChecker::finished()
|
||||
}
|
||||
|
||||
m_model->describe();
|
||||
m_model->changeRequirementsList();
|
||||
m_model->reCheckList();
|
||||
QTimer::singleShot( 0, this, &RequirementsChecker::done );
|
||||
}
|
||||
}
|
||||
|
@ -19,24 +19,38 @@ void
|
||||
RequirementsModel::clear()
|
||||
{
|
||||
QMutexLocker l( &m_addLock );
|
||||
emit beginResetModel();
|
||||
beginResetModel();
|
||||
m_requirements.clear();
|
||||
changeRequirementsList();
|
||||
emit endResetModel();
|
||||
endResetModel();
|
||||
reCheckList();
|
||||
}
|
||||
|
||||
void
|
||||
RequirementsModel::addRequirementsList( const Calamares::RequirementsList& requirements )
|
||||
{
|
||||
QMutexLocker l( &m_addLock );
|
||||
emit beginResetModel();
|
||||
m_requirements.append( requirements );
|
||||
changeRequirementsList();
|
||||
emit endResetModel();
|
||||
|
||||
beginResetModel();
|
||||
for ( const auto& r : requirements )
|
||||
{
|
||||
auto it = std::find_if( m_requirements.begin(),
|
||||
m_requirements.end(),
|
||||
[ &r ]( const Calamares::RequirementEntry& re ) { return r.name == re.name; } );
|
||||
if ( it != m_requirements.end() )
|
||||
{
|
||||
*it = r;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_requirements.append( r );
|
||||
}
|
||||
}
|
||||
endResetModel();
|
||||
reCheckList();
|
||||
}
|
||||
|
||||
void
|
||||
RequirementsModel::changeRequirementsList()
|
||||
RequirementsModel::reCheckList()
|
||||
{
|
||||
auto isUnSatisfied = []( const Calamares::RequirementEntry& e ) { return !e.satisfied; };
|
||||
auto isMandatoryAndUnSatisfied = []( const Calamares::RequirementEntry& e ) { return e.mandatory && !e.satisfied; };
|
||||
@ -44,8 +58,8 @@ RequirementsModel::changeRequirementsList()
|
||||
m_satisfiedRequirements = std::none_of( m_requirements.begin(), m_requirements.end(), isUnSatisfied );
|
||||
m_satisfiedMandatory = std::none_of( m_requirements.begin(), m_requirements.end(), isMandatoryAndUnSatisfied );
|
||||
|
||||
emit satisfiedRequirementsChanged( m_satisfiedRequirements );
|
||||
emit satisfiedMandatoryChanged( m_satisfiedMandatory );
|
||||
Q_EMIT satisfiedRequirementsChanged( m_satisfiedRequirements );
|
||||
Q_EMIT satisfiedMandatoryChanged( m_satisfiedMandatory );
|
||||
}
|
||||
|
||||
int
|
||||
@ -108,7 +122,7 @@ void
|
||||
RequirementsModel::setProgressMessage( const QString& m )
|
||||
{
|
||||
m_progressMessage = m;
|
||||
emit progressMessageChanged( m_progressMessage );
|
||||
Q_EMIT progressMessageChanged( m_progressMessage );
|
||||
}
|
||||
|
||||
} // namespace Calamares
|
||||
|
@ -33,8 +33,6 @@ class RequirementsChecker;
|
||||
*/
|
||||
class DLLEXPORT RequirementsModel : public QAbstractListModel
|
||||
{
|
||||
friend class RequirementsChecker;
|
||||
|
||||
Q_OBJECT
|
||||
Q_PROPERTY( bool satisfiedRequirements READ satisfiedRequirements NOTIFY satisfiedRequirementsChanged FINAL )
|
||||
Q_PROPERTY( bool satisfiedMandatory READ satisfiedMandatory NOTIFY satisfiedMandatoryChanged FINAL )
|
||||
@ -69,6 +67,15 @@ public:
|
||||
///@brief Debugging tool, describe the checking-state
|
||||
void describe() const;
|
||||
|
||||
///@brief Update progress message (called by the checker)
|
||||
void setProgressMessage( const QString& m );
|
||||
|
||||
///@brief Append some requirements; resets the model
|
||||
void addRequirementsList( const Calamares::RequirementsList& requirements );
|
||||
|
||||
///@brief Check the whole list, emit signals satisfied...()
|
||||
void reCheckList();
|
||||
|
||||
signals:
|
||||
void satisfiedRequirementsChanged( bool value );
|
||||
void satisfiedMandatoryChanged( bool value );
|
||||
@ -77,20 +84,10 @@ signals:
|
||||
protected:
|
||||
QHash< int, QByteArray > roleNames() const override;
|
||||
|
||||
|
||||
///@brief Clears the requirements; resets the model
|
||||
void clear();
|
||||
|
||||
///@brief Append some requirements; resets the model
|
||||
void addRequirementsList( const Calamares::RequirementsList& requirements );
|
||||
|
||||
///@brief Update progress message (called by the checker)
|
||||
void setProgressMessage( const QString& m );
|
||||
|
||||
private:
|
||||
///@brief Implementation for {set,add}RequirementsList
|
||||
void changeRequirementsList();
|
||||
|
||||
QString m_progressMessage;
|
||||
QMutex m_addLock;
|
||||
RequirementsList m_requirements;
|
||||
|
Loading…
Reference in New Issue
Block a user