diff --git a/src/ops/deactivatevolumegroupoperation.cpp b/src/ops/deactivatevolumegroupoperation.cpp index c9a5fe9..091b785 100644 --- a/src/ops/deactivatevolumegroupoperation.cpp +++ b/src/ops/deactivatevolumegroupoperation.cpp @@ -32,7 +32,8 @@ DeactivateVolumeGroupOperation::DeactivateVolumeGroupOperation(VolumeManagerDevi Operation(), m_DeactivateVolumeGroupJob(new DeactivateVolumeGroupJob(d)), m_DeactivateLogicalVolumeJob(new DeactivateLogicalVolumeJob(d)), - m_Device(d) + m_Device(d), + m_PartitionTable(d.partitionTable()) { addJob(deactivateLogicalVolumeJob()); addJob(deactivateVolumeGroupJob()); @@ -45,8 +46,14 @@ QString DeactivateVolumeGroupOperation::description() const void DeactivateVolumeGroupOperation::preview() { + device().setPartitionTable(new PartitionTable(PartitionTable::vmd, 0, device().totalLogical() - 1)); } void DeactivateVolumeGroupOperation::undo() { + PartitionTable* tmp = device().partitionTable(); + if (tmp != partitionTable()) { + device().setPartitionTable(partitionTable()); + delete tmp; + } } diff --git a/src/ops/deactivatevolumegroupoperation.h b/src/ops/deactivatevolumegroupoperation.h index bdd94b6..d462ea1 100644 --- a/src/ops/deactivatevolumegroupoperation.h +++ b/src/ops/deactivatevolumegroupoperation.h @@ -30,6 +30,7 @@ class DeactivateLogicalVolumeJob; class DeactivateVolumeGroupJob; class VolumeManagerDevice; class OperationStack; +class PartitionTable; class LIBKPMCORE_EXPORT DeactivateVolumeGroupOperation : public Operation { @@ -70,10 +71,15 @@ protected: return m_Device; } + PartitionTable* partitionTable() { + return m_PartitionTable; + } + private: DeactivateVolumeGroupJob* m_DeactivateVolumeGroupJob; DeactivateLogicalVolumeJob* m_DeactivateLogicalVolumeJob; VolumeManagerDevice& m_Device; + PartitionTable* m_PartitionTable; }; #endif