[partition] Refactor common validate-the-mount-point logic

This commit is contained in:
Adriaan de Groot 2022-02-01 14:42:18 +01:00
parent d8be9a9443
commit 82dcc1b57b
4 changed files with 44 additions and 32 deletions

View File

@ -325,22 +325,7 @@ CreatePartitionDialog::updateMountPointUi()
void void
CreatePartitionDialog::checkMountPointSelection() CreatePartitionDialog::checkMountPointSelection()
{ {
const QString mountPoint = selectedMountPoint( m_ui->mountPointComboBox ); validateMountPoint( selectedMountPoint( m_ui->mountPointComboBox ), m_usedMountPoints, m_ui->labelMountPoint, m_ui->buttonBox->button( QDialogButtonBox::Ok ));
if ( m_usedMountPoints.contains( mountPoint ) )
{
m_ui->labelMountPoint->setText( tr( "Mountpoint already in use. Please select another one." ) );
m_ui->buttonBox->button( QDialogButtonBox::Ok )->setEnabled( false );
}
else if ( !mountPoint.isEmpty() && !mountPoint.startsWith( '/' ) )
{
m_ui->labelMountPoint->setText( tr( "Mountpoint must start with a <pre>/</pre>." ) );
m_ui->buttonBox->button( QDialogButtonBox::Ok )->setEnabled( false );
}
else
{
m_ui->labelMountPoint->setText( QString() );
m_ui->buttonBox->button( QDialogButtonBox::Ok )->setEnabled( true );
}
} }
void void

View File

@ -295,20 +295,5 @@ EditExistingPartitionDialog::updateMountPointPicker()
void void
EditExistingPartitionDialog::checkMountPointSelection() EditExistingPartitionDialog::checkMountPointSelection()
{ {
const QString mountPoint = selectedMountPoint( m_ui->mountPointComboBox ); validateMountPoint( selectedMountPoint( m_ui->mountPointComboBox ), m_usedMountPoints, m_ui->labelMountPoint, m_ui->buttonBox->button( QDialogButtonBox::Ok ));
if ( m_usedMountPoints.contains( mountPoint ) )
{
m_ui->labelMountPoint->setText( tr( "Mountpoint already in use. Please select another one." ) );
m_ui->buttonBox->button( QDialogButtonBox::Ok )->setEnabled( false );
}
else if ( !mountPoint.isEmpty() && !mountPoint.startsWith( '/' ) )
{
m_ui->labelMountPoint->setText( tr( "Mountpoint must start with a <pre>/</pre>." ) );
m_ui->buttonBox->button( QDialogButtonBox::Ok )->setEnabled( false );
}
else
{
m_ui->labelMountPoint->setText( QString() );
m_ui->buttonBox->button( QDialogButtonBox::Ok )->setEnabled( true );
}
} }

View File

@ -12,14 +12,17 @@
#include "PartitionDialogHelpers.h" #include "PartitionDialogHelpers.h"
#include "core/PartUtils.h" #include "core/PartUtils.h"
#include "gui/CreatePartitionDialog.h"
#include "GlobalStorage.h" #include "GlobalStorage.h"
#include "JobQueue.h" #include "JobQueue.h"
#include "utils/Logger.h" #include "utils/Logger.h"
#include <QComboBox> #include <QComboBox>
#include <QLabel>
#include <QLineEdit> #include <QLineEdit>
#include <QListWidget> #include <QListWidget>
#include <QPushButton>
QStringList QStringList
standardMountPoints() standardMountPoints()
@ -81,6 +84,33 @@ setSelectedMountPoint( QComboBox& combo, const QString& selected )
} }
} }
bool validateMountPoint( const QString& mountPoint, const QStringList& inUse, QLabel* label, QPushButton* button )
{
QString msg;
bool ok = true;
if ( inUse.contains( mountPoint ) )
{
msg = CreatePartitionDialog::tr( "Mountpoint already in use. Please select another one." );
ok = false;
}
else if ( !mountPoint.isEmpty() && !mountPoint.startsWith( '/' ) )
{
msg = CreatePartitionDialog::tr( "Mountpoint must start with a <pre>/</pre>." );
ok = false;
}
if ( label )
{
label->setText( msg );
}
if ( button )
{
button->setEnabled( ok );
}
return ok;
}
PartitionTable::Flags PartitionTable::Flags
flagsFromList( const QListWidget& list ) flagsFromList( const QListWidget& list )

View File

@ -16,7 +16,9 @@
#include <QStringList> #include <QStringList>
class QPushButton;
class QComboBox; class QComboBox;
class QLabel;
class QListWidget; class QListWidget;
/** /**
@ -58,6 +60,16 @@ setSelectedMountPoint( QComboBox* combo, const QString& selected )
setSelectedMountPoint( *combo, selected ); setSelectedMountPoint( *combo, selected );
} }
/** @brief Validate a @p mountPoint and adjust the UI
*
* If @p mountPoint is valid -- unused and starts with a /, for instance --
* then the button is enabled, label is cleared, and returns @c true.
*
* If it is not valid, returns @c false and sets the UI
* to explain why.
*/
bool validateMountPoint( const QString& mountPoint, const QStringList& inUse, QLabel* label, QPushButton* button );
/** /**
* Get the flags that have been checked in the list widget. * Get the flags that have been checked in the list widget.
*/ */