mirror of
https://github.com/parchlinux/calamares.git
synced 2025-02-24 02:45:44 -05:00
[partition] Fix parsing of partition size in partition layout
When setting the size of a partition without indicating the unit, two problems occur: - the size is parsed as an integer, not as a string, hence the configuration parsing fails - the size parser doesn't recognize the fact that the size has no units and defaults to 100% This patch fixes the configuration parsing as well as the size string parsing. Signed-off-by: Arnaud Ferraris <arnaud.ferraris@collabora.com>
This commit is contained in:
parent
18bb71aceb
commit
cf45d55b32
2 changed files with 24 additions and 4 deletions
|
@ -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
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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 )
|
||||
|
|
Loading…
Add table
Reference in a new issue