[partition] Add flags to PartitionInfo

- PartitionInfo maintains information on "what is desired" for
   a given Partition. Now we can set desired flags, alongside
   the flags already supported by Partition (where activeFlags()
   gives you the flags currently set on that partition).
This commit is contained in:
Adriaan de Groot 2018-05-16 06:53:35 -04:00
parent 5b4668822d
commit 7df143f64a
2 changed files with 24 additions and 3 deletions

View File

@ -27,8 +27,9 @@
namespace PartitionInfo namespace PartitionInfo
{ {
static const char* MOUNT_POINT_PROPERTY = "_calamares_mountPoint"; static const char MOUNT_POINT_PROPERTY[] = "_calamares_mountPoint";
static const char* FORMAT_PROPERTY = "_calamares_format"; static const char FORMAT_PROPERTY[] = "_calamares_format";
static const char FLAGS_PROPERTY[] = "_calamares_flags";
QString QString
mountPoint( Partition* partition ) mountPoint( Partition* partition )
@ -54,18 +55,33 @@ setFormat( Partition* partition, bool value )
partition->setProperty( FORMAT_PROPERTY, 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<PartitionTable::Flags>( v.toInt() );
return partition->activeFlags();
}
void setFlags(Partition* partition, PartitionTable::Flags f)
{
partition->setProperty( FLAGS_PROPERTY, PartitionTable::Flags::Int( f ) );
}
void void
reset( Partition* partition ) reset( Partition* partition )
{ {
partition->setProperty( MOUNT_POINT_PROPERTY, QVariant() ); partition->setProperty( MOUNT_POINT_PROPERTY, QVariant() );
partition->setProperty( FORMAT_PROPERTY, QVariant() ); partition->setProperty( FORMAT_PROPERTY, QVariant() );
partition->setProperty( FLAGS_PROPERTY, QVariant() );
} }
bool bool
isDirty( Partition* partition ) isDirty( Partition* partition )
{ {
return !mountPoint( partition ).isEmpty() return !mountPoint( partition ).isEmpty()
|| format( partition ); || format( partition )
|| flags( partition ) != partition->activeFlags();
} }
} // namespace } // namespace

View File

@ -21,6 +21,8 @@
#include <QHash> #include <QHash>
#include <QString> #include <QString>
#include <kpmcore/core/partitiontable.h>
class Partition; class Partition;
/** /**
@ -45,6 +47,9 @@ void setMountPoint( Partition* partition, const QString& value );
bool format( Partition* partition ); bool format( Partition* partition );
void setFormat( Partition* partition, bool value ); void setFormat( Partition* partition, bool value );
PartitionTable::Flags flags( const Partition* partition );
void setFlags( Partition* partition, PartitionTable::Flags f );
void reset( Partition* partition ); void reset( Partition* partition );
/** /**