diff --git a/src/modules/partition/core/PartitionInfo.cpp b/src/modules/partition/core/PartitionInfo.cpp index 72cca8976..dcd49d2e9 100644 --- a/src/modules/partition/core/PartitionInfo.cpp +++ b/src/modules/partition/core/PartitionInfo.cpp @@ -27,8 +27,9 @@ namespace PartitionInfo { -static const char* MOUNT_POINT_PROPERTY = "_calamares_mountPoint"; -static const char* FORMAT_PROPERTY = "_calamares_format"; +static const char MOUNT_POINT_PROPERTY[] = "_calamares_mountPoint"; +static const char FORMAT_PROPERTY[] = "_calamares_format"; +static const char FLAGS_PROPERTY[] = "_calamares_flags"; QString mountPoint( Partition* partition ) @@ -54,18 +55,33 @@ setFormat( Partition* partition, bool value ) partition->setProperty( FORMAT_PROPERTY, value ); } +PartitionTable::Flags flags(const Partition* partition) +{ + auto v = partition->property( FLAGS_PROPERTY ); + if (v.type() == QVariant::Int ) + return static_cast( v.toInt() ); + return partition->activeFlags(); +} + +void setFlags(Partition* partition, PartitionTable::Flags f) +{ + partition->setProperty( FLAGS_PROPERTY, PartitionTable::Flags::Int( f ) ); +} + void reset( Partition* partition ) { partition->setProperty( MOUNT_POINT_PROPERTY, QVariant() ); partition->setProperty( FORMAT_PROPERTY, QVariant() ); + partition->setProperty( FLAGS_PROPERTY, QVariant() ); } bool isDirty( Partition* partition ) { return !mountPoint( partition ).isEmpty() - || format( partition ); + || format( partition ) + || flags( partition ) != partition->activeFlags(); } } // namespace diff --git a/src/modules/partition/core/PartitionInfo.h b/src/modules/partition/core/PartitionInfo.h index 2474a3a2d..9003bf997 100644 --- a/src/modules/partition/core/PartitionInfo.h +++ b/src/modules/partition/core/PartitionInfo.h @@ -21,6 +21,8 @@ #include #include +#include + class Partition; /** @@ -45,6 +47,9 @@ void setMountPoint( Partition* partition, const QString& value ); bool format( Partition* partition ); void setFormat( Partition* partition, bool value ); +PartitionTable::Flags flags( const Partition* partition ); +void setFlags( Partition* partition, PartitionTable::Flags f ); + void reset( Partition* partition ); /**