Use osProber output in ReplacePage.

CAL-155 #close
This commit is contained in:
Teo Mrnjavac 2014-12-19 15:25:31 +01:00
parent f8f005f53c
commit 7cd382b39c

View File

@ -127,6 +127,10 @@ ReplacePage::onPartitionSelected()
PartitionModel* model = qobject_cast< PartitionModel* >( m_ui->partitionTreeView->model() ); PartitionModel* model = qobject_cast< PartitionModel* >( m_ui->partitionTreeView->model() );
if ( model && ok ) if ( model && ok )
{ {
QStringList osproberLines = Calamares::JobQueue::instance()
->globalStorage()
->value( "osproberLines" ).toStringList();
Partition* partition = model->partitionForIndex( m_ui->partitionTreeView->currentIndex() ); Partition* partition = model->partitionForIndex( m_ui->partitionTreeView->currentIndex() );
if ( !partition || if ( !partition ||
partition->state() != Partition::StateNone ) partition->state() != Partition::StateNone )
@ -169,27 +173,61 @@ ReplacePage::onPartitionSelected()
return; return;
} }
QString prettyName = tr( "Data partition (%1)" )
.arg( partition->fileSystem().name() );
foreach ( const QString& line, osproberLines )
{
QStringList lineColumns = line.split( ':' );
QString path = lineColumns.value( 0 ).simplified();
if ( path == partition->partitionPath() )
{
QString osName;
if ( !lineColumns.value( 1 ).simplified().isEmpty() )
osName = lineColumns.value( 1 ).simplified();
else if ( !lineColumns.value( 2 ).simplified().isEmpty() )
osName = lineColumns.value( 2 ).simplified();
if ( osName.isEmpty() )
{
prettyName = tr( "Unknown system partition (%1)" )
.arg( partition->fileSystem().name() );
}
else
{
prettyName = tr ( "%1 system partition (%2)" )
.arg( osName.replace( 0, 1, osName.at( 0 ).toUpper() ) )
.arg( partition->fileSystem().name() );
}
break;
}
}
if ( partition->capacity() < requiredSpaceB ) if ( partition->capacity() < requiredSpaceB )
{ {
updateStatus( CalamaresUtils::Fail, updateStatus( CalamaresUtils::Fail,
tr( "The partition %1 is too small for %2. Please select a partition " tr( "<b>%4</b><br/><br/>"
"The partition %1 is too small for %2. Please select a partition "
"with capacity at least %3 GiB." ) "with capacity at least %3 GiB." )
.arg( partition->partitionPath() ) .arg( partition->partitionPath() )
.arg( Calamares::Branding::instance()-> .arg( Calamares::Branding::instance()->
string( Calamares::Branding::VersionedName ) ) string( Calamares::Branding::VersionedName ) )
.arg( requiredSpaceB / ( 1024. * 1024. * 1024. ), .arg( requiredSpaceB / ( 1024. * 1024. * 1024. ),
0, 'f', 1 ) ); 0, 'f', 1 )
.arg( prettyName ) );
setNextEnabled( false ); setNextEnabled( false );
return; return;
} }
updateStatus( CalamaresUtils::Partitions, updateStatus( CalamaresUtils::Partitions,
tr( "%1 will be installed on %2.<br/>" tr( "<b>%3</b><br/><br/>"
"%1 will be installed on %2.<br/>"
"<font color=\"red\">Warning: </font>all data on partition" "<font color=\"red\">Warning: </font>all data on partition"
"%2 will be lost.") "%2 will be lost.")
.arg( Calamares::Branding::instance()-> .arg( Calamares::Branding::instance()->
string( Calamares::Branding::VersionedName ) ) string( Calamares::Branding::VersionedName ) )
.arg( partition->partitionPath() ) ); .arg( partition->partitionPath() )
.arg( prettyName ) );
setNextEnabled( true ); setNextEnabled( true );
} }
} }