Merge branch 'issue-1098'
- Doesn't fix the issue, but adds useful things I want in master already, also for debugging other issues.
This commit is contained in:
commit
fdb4311a70
@ -43,6 +43,25 @@
|
||||
namespace PartUtils
|
||||
{
|
||||
|
||||
static QString
|
||||
convenienceName( const Partition* const candidate )
|
||||
{
|
||||
if ( !candidate->mountPoint().isEmpty() )
|
||||
return candidate->mountPoint();
|
||||
if ( !candidate->partitionPath().isEmpty() )
|
||||
return candidate->partitionPath();
|
||||
if ( !candidate->devicePath().isEmpty() )
|
||||
return candidate->devicePath();
|
||||
if ( !candidate->deviceNode().isEmpty() )
|
||||
return candidate->devicePath();
|
||||
|
||||
QString p;
|
||||
QTextStream s( &p );
|
||||
s << (void *)candidate;
|
||||
|
||||
return p;
|
||||
}
|
||||
|
||||
bool
|
||||
canBeReplaced( Partition* candidate )
|
||||
{
|
||||
@ -64,12 +83,12 @@ canBeReplaced( Partition* candidate )
|
||||
<< QString( "(%1GB)" ).arg( requiredStorageB / 1024 / 1024 / 1024 );
|
||||
cDebug() << "Storage capacity B:" << availableStorageB
|
||||
<< QString( "(%1GB)" ).arg( availableStorageB / 1024 / 1024 / 1024 )
|
||||
<< "for" << candidate->partitionPath() << " length:" << candidate->length();
|
||||
<< "for" << convenienceName( candidate ) << " length:" << candidate->length();
|
||||
|
||||
if ( ok &&
|
||||
availableStorageB > requiredStorageB )
|
||||
{
|
||||
cDebug() << "Partition" << candidate->partitionPath() << "authorized for replace install.";
|
||||
cDebug() << "Partition" << convenienceName( candidate ) << "authorized for replace install.";
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -86,7 +105,7 @@ canBeResized( Partition* candidate )
|
||||
return false;
|
||||
}
|
||||
|
||||
cDebug() << "Checking if" << candidate->partitionPath() << "can be resized.";
|
||||
cDebug() << "Checking if" << convenienceName( candidate ) << "can be resized.";
|
||||
if ( !candidate->fileSystem().supportGrow() ||
|
||||
!candidate->fileSystem().supportShrink() )
|
||||
{
|
||||
@ -140,13 +159,13 @@ canBeResized( Partition* candidate )
|
||||
<< QString( "(%1GB)" ).arg( advisedStorageGB );
|
||||
cDebug() << "Available storage B:" << availableStorageB
|
||||
<< QString( "(%1GB)" ).arg( availableStorageB / 1024 / 1024 / 1024 )
|
||||
<< "for" << candidate->partitionPath() << " length:" << candidate->length()
|
||||
<< "for" << convenienceName( candidate ) << " length:" << candidate->length()
|
||||
<< " sectorsUsed:" << candidate->sectorsUsed() << " fsType:" << candidate->fileSystem().name();
|
||||
|
||||
if ( ok &&
|
||||
availableStorageB > advisedStorageB )
|
||||
{
|
||||
cDebug() << "Partition" << candidate->partitionPath() << "authorized for resize + autopartition install.";
|
||||
cDebug() << "Partition" << convenienceName( candidate ) << "authorized for resize + autopartition install.";
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -382,7 +401,7 @@ isEfiSystem()
|
||||
bool
|
||||
isEfiBootable( const Partition* candidate )
|
||||
{
|
||||
cDebug() << "Check EFI bootable" << candidate->partitionPath() << candidate->devicePath();
|
||||
cDebug() << "Check EFI bootable" << convenienceName( candidate ) << candidate->devicePath();
|
||||
cDebug() << " .. flags" << candidate->activeFlags();
|
||||
|
||||
auto flags = PartitionInfo::flags( candidate );
|
||||
|
@ -154,6 +154,9 @@ public:
|
||||
|
||||
void setPartitionFlags( Device* device, Partition* partition, PartitionTable::Flags flags );
|
||||
|
||||
/// @brief Retrieve the path where the bootloader will be installed
|
||||
QString bootLoaderInstallPath() const { return m_bootLoaderInstallPath; }
|
||||
/// @brief Set the path where the bootloader will be installed
|
||||
void setBootLoaderInstallPath( const QString& path );
|
||||
|
||||
void initLayout();
|
||||
|
@ -56,7 +56,6 @@
|
||||
#include <kpmcore/ops/removevolumegroupoperation.h>
|
||||
|
||||
// Qt
|
||||
#include <QDebug>
|
||||
#include <QHeaderView>
|
||||
#include <QItemSelectionModel>
|
||||
#include <QMessageBox>
|
||||
@ -90,22 +89,9 @@ PartitionPage::PartitionPage( PartitionCoreModule* core, QWidget* parent )
|
||||
|
||||
updateFromCurrentDevice();
|
||||
|
||||
connect( m_ui->deviceComboBox, &QComboBox::currentTextChanged,
|
||||
[ this ]( const QString& /* text */ )
|
||||
{
|
||||
updateFromCurrentDevice();
|
||||
} );
|
||||
connect( m_ui->bootLoaderComboBox, static_cast<void(QComboBox::*)(const QString &)>(&QComboBox::activated),
|
||||
[ this ]( const QString& /* text */ )
|
||||
{
|
||||
m_lastSelectedBootLoaderIndex = m_ui->bootLoaderComboBox->currentIndex();
|
||||
} );
|
||||
|
||||
connect( m_ui->bootLoaderComboBox, &QComboBox::currentTextChanged,
|
||||
[ this ]( const QString& /* text */ )
|
||||
{
|
||||
updateBootLoaderInstallPath();
|
||||
} );
|
||||
connect( m_ui->deviceComboBox, &QComboBox::currentTextChanged, this, &PartitionPage::updateFromCurrentDevice );
|
||||
connect( m_ui->bootLoaderComboBox, QOverload<int>::of(&QComboBox::activated), this, &PartitionPage::updateSelectedBootLoaderIndex );
|
||||
connect( m_ui->bootLoaderComboBox, &QComboBox::currentTextChanged, this, &PartitionPage::updateBootLoaderInstallPath );
|
||||
|
||||
connect( m_core, &PartitionCoreModule::isDirtyChanged, m_ui->revertButton, &QWidget::setEnabled );
|
||||
|
||||
@ -376,18 +362,18 @@ PartitionPage::onCreateClicked()
|
||||
if ( !checkCanCreate( model->device() ) )
|
||||
return;
|
||||
|
||||
QPointer< CreatePartitionDialog > dlg = new CreatePartitionDialog( model->device(),
|
||||
CreatePartitionDialog dlg(
|
||||
model->device(),
|
||||
partition->parent(),
|
||||
nullptr,
|
||||
getCurrentUsedMountpoints(),
|
||||
this );
|
||||
dlg->initFromFreeSpace( partition );
|
||||
if ( dlg->exec() == QDialog::Accepted )
|
||||
dlg.initFromFreeSpace( partition );
|
||||
if ( dlg.exec() == QDialog::Accepted )
|
||||
{
|
||||
Partition* newPart = dlg->createPartition();
|
||||
m_core->createPartition( model->device(), newPart, dlg->newFlags() );
|
||||
Partition* newPart = dlg.createPartition();
|
||||
m_core->createPartition( model->device(), newPart, dlg.newFlags() );
|
||||
}
|
||||
delete dlg;
|
||||
}
|
||||
|
||||
void
|
||||
@ -508,10 +494,17 @@ PartitionPage::updateBootLoaderInstallPath()
|
||||
QVariant var = m_ui->bootLoaderComboBox->currentData( BootLoaderModel::BootLoaderPathRole );
|
||||
if ( !var.isValid() )
|
||||
return;
|
||||
qDebug() << "PartitionPage::updateBootLoaderInstallPath" << var.toString();
|
||||
cDebug() << "PartitionPage::updateBootLoaderInstallPath" << var.toString();
|
||||
m_core->setBootLoaderInstallPath( var.toString() );
|
||||
}
|
||||
|
||||
void
|
||||
PartitionPage::updateSelectedBootLoaderIndex()
|
||||
{
|
||||
m_lastSelectedBootLoaderIndex = m_ui->bootLoaderComboBox->currentIndex();
|
||||
cDebug() << "Selected bootloader index" << m_lastSelectedBootLoaderIndex;
|
||||
}
|
||||
|
||||
void
|
||||
PartitionPage::updateFromCurrentDevice()
|
||||
{
|
||||
|
@ -50,6 +50,14 @@ public:
|
||||
int selectedDeviceIndex();
|
||||
void selectDeviceByIndex( int index );
|
||||
|
||||
private slots:
|
||||
/// @brief Update everything when the base device changes
|
||||
void updateFromCurrentDevice();
|
||||
/// @brief Update when the selected device for boot loader changes
|
||||
void updateBootLoaderInstallPath();
|
||||
/// @brief Explicitly selected boot loader path
|
||||
void updateSelectedBootLoaderIndex();
|
||||
|
||||
private:
|
||||
QScopedPointer< Ui_PartitionPage > m_ui;
|
||||
PartitionCoreModule* m_core;
|
||||
@ -67,8 +75,6 @@ private:
|
||||
|
||||
void updatePartitionToCreate( Device*, Partition* );
|
||||
void editExistingPartition( Device*, Partition* );
|
||||
void updateBootLoaderInstallPath();
|
||||
void updateFromCurrentDevice();
|
||||
void updateBootLoaderIndex();
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user