|
|
|
@ -125,8 +125,8 @@ PartitionPage::~PartitionPage() {}
|
|
|
|
|
void
|
|
|
|
|
PartitionPage::updateButtons()
|
|
|
|
|
{
|
|
|
|
|
bool create = false, createTable = false, edit = false, del = false, currentDeviceIsVG = false,
|
|
|
|
|
isDeactivable = false;
|
|
|
|
|
bool allow_create = false, allow_create_table = false, allow_edit = false, allow_delete = false;
|
|
|
|
|
bool currentDeviceIsVG = false, isDeactivable = false;
|
|
|
|
|
bool isRemovable = false, isVGdeactivated = false;
|
|
|
|
|
|
|
|
|
|
QModelIndex index = m_ui->partitionTreeView->currentIndex();
|
|
|
|
@ -136,17 +136,21 @@ PartitionPage::updateButtons()
|
|
|
|
|
Q_ASSERT( model );
|
|
|
|
|
Partition* partition = model->partitionForIndex( index );
|
|
|
|
|
Q_ASSERT( partition );
|
|
|
|
|
bool isFree = CalamaresUtils::Partition::isPartitionFreeSpace( partition );
|
|
|
|
|
bool isExtended = partition->roles().has( PartitionRole::Extended );
|
|
|
|
|
|
|
|
|
|
bool hasChildren = isExtended
|
|
|
|
|
const bool isFree = CalamaresUtils::Partition::isPartitionFreeSpace( partition );
|
|
|
|
|
const bool isExtended = partition->roles().has( PartitionRole::Extended );
|
|
|
|
|
|
|
|
|
|
// An extended partition can have a "free space" child; that one does
|
|
|
|
|
// not count as a real child. If there are more children, at least one
|
|
|
|
|
// is a real one and we should not allow the extended partition to be
|
|
|
|
|
// deleted.
|
|
|
|
|
const bool hasChildren = isExtended
|
|
|
|
|
&& ( partition->children().length() > 1
|
|
|
|
|
|| ( partition->children().length() == 1
|
|
|
|
|
&& !CalamaresUtils::Partition::isPartitionFreeSpace( partition->children().at( 0 ) ) ) );
|
|
|
|
|
|
|
|
|
|
bool isInVG = m_core->isInVG( partition );
|
|
|
|
|
const bool isInVG = m_core->isInVG( partition );
|
|
|
|
|
|
|
|
|
|
create = isFree;
|
|
|
|
|
allow_create = isFree;
|
|
|
|
|
|
|
|
|
|
// Keep it simple for now: do not support editing extended partitions as
|
|
|
|
|
// it does not work with our current edit implementation which is
|
|
|
|
@ -155,8 +159,8 @@ PartitionPage::updateButtons()
|
|
|
|
|
// inside them, so an edit must be applied without altering the job
|
|
|
|
|
// order.
|
|
|
|
|
// TODO: See if LVM PVs can be edited in Calamares
|
|
|
|
|
edit = !isFree && !isExtended;
|
|
|
|
|
del = !isFree && !isInVG && !hasChildren;
|
|
|
|
|
allow_edit = !isFree && !isExtended;
|
|
|
|
|
allow_delete = !isFree && !isInVG && !hasChildren;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( m_ui->deviceComboBox->currentIndex() >= 0 )
|
|
|
|
@ -173,7 +177,7 @@ PartitionPage::updateButtons()
|
|
|
|
|
}
|
|
|
|
|
else if ( device->type() != Device::Type::LVM_Device )
|
|
|
|
|
{
|
|
|
|
|
createTable = true;
|
|
|
|
|
allow_create_table = true;
|
|
|
|
|
|
|
|
|
|
#ifdef WITH_KPMCORE4API
|
|
|
|
|
if ( device->type() == Device::Type::SoftwareRAID_Device
|
|
|
|
@ -202,10 +206,10 @@ PartitionPage::updateButtons()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
m_ui->createButton->setEnabled( create );
|
|
|
|
|
m_ui->editButton->setEnabled( edit );
|
|
|
|
|
m_ui->deleteButton->setEnabled( del );
|
|
|
|
|
m_ui->newPartitionTableButton->setEnabled( createTable );
|
|
|
|
|
m_ui->createButton->setEnabled( allow_create );
|
|
|
|
|
m_ui->editButton->setEnabled( allow_edit );
|
|
|
|
|
m_ui->deleteButton->setEnabled( allow_delete );
|
|
|
|
|
m_ui->newPartitionTableButton->setEnabled( allow_create_table );
|
|
|
|
|
m_ui->resizeVolumeGroupButton->setEnabled( currentDeviceIsVG && !isVGdeactivated );
|
|
|
|
|
m_ui->deactivateVolumeGroupButton->setEnabled( currentDeviceIsVG && isDeactivable && !isVGdeactivated );
|
|
|
|
|
m_ui->removeVolumeGroupButton->setEnabled( currentDeviceIsVG && isRemovable );
|
|
|
|
|