Merge pull request #1077 from a-wai/partition-layout-fix-sizes

Fix partition layout sizes parsing
This commit is contained in:
Adriaan de Groot 2019-02-06 03:48:27 -05:00 committed by GitHub
commit d3ac29d98c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 32 additions and 6 deletions

View File

@ -772,17 +772,30 @@ PartitionCoreModule::initLayout()
void
PartitionCoreModule::initLayout( const QVariantList& config )
{
QString sizeString;
QString minSizeString;
m_partLayout = new PartitionLayout();
for ( const auto& r : config )
{
QVariantMap pentry = r.toMap();
if ( pentry.contains("size") && CalamaresUtils::getString( pentry, "size" ).isEmpty() )
sizeString.setNum( CalamaresUtils::getInteger( pentry, "size", 0 ) );
else
sizeString = CalamaresUtils::getString( pentry, "size" );
if ( pentry.contains("minSize") && CalamaresUtils::getString( pentry, "minSize" ).isEmpty() )
minSizeString.setNum( CalamaresUtils::getInteger( pentry, "minSize", 0 ) );
else
minSizeString = CalamaresUtils::getString( pentry, "minSize" );
m_partLayout->addEntry( CalamaresUtils::getString( pentry, "name" ),
CalamaresUtils::getString( pentry, "mountPoint" ),
CalamaresUtils::getString( pentry, "filesystem" ),
CalamaresUtils::getString( pentry, "size" ),
CalamaresUtils::getString( pentry, "minSize" )
sizeString,
minSizeString
);
}
}

View File

@ -57,11 +57,18 @@ parseSizeString( QString sizeString, PartitionLayout::SizeUnit *unit )
{
double value;
bool ok;
QString valueString;
QString unitString;
QRegExp rx( "[KkMmGg%]" );
int pos = rx.indexIn( sizeString );
QString valueString = sizeString.mid( 0, pos );
QString unitString = sizeString.mid( pos );
if (pos > 0)
{
valueString = sizeString.mid( 0, pos );
unitString = sizeString.mid( pos );
}
else
valueString = sizeString;
value = valueString.toDouble( &ok );
if ( !ok )
@ -103,6 +110,9 @@ PartitionLayout::addEntry( QString mountPoint, QString size, QString min )
entry.partMountPoint = mountPoint;
entry.partFileSystem = FileSystem::Ext4;
entry.partSize = parseSizeString( size , &entry.partSizeUnit );
if (min.isEmpty())
entry.partMinSize = 0;
else
entry.partMinSize = parseSizeString( min , &entry.partMinSizeUnit );
partLayout.append( entry );
@ -117,6 +127,9 @@ PartitionLayout::addEntry( QString label, QString mountPoint, QString fs, QStrin
entry.partMountPoint = mountPoint;
entry.partFileSystem = FileSystem::typeForName( fs );
entry.partSize = parseSizeString( size , &entry.partSizeUnit );
if (min.isEmpty())
entry.partMinSize = 0;
else
entry.partMinSize = parseSizeString( min , &entry.partMinSizeUnit );
partLayout.append( entry );