[partition] Migrate type for SwapChoice to Config object
This commit is contained in:
parent
881661e94b
commit
0f4fe6294c
@ -31,8 +31,39 @@ Config::installChoiceNames()
|
|||||||
return names;
|
return names;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const NamedEnumTable< Config::SwapChoice >&
|
||||||
|
Config::swapChoiceNames()
|
||||||
|
{
|
||||||
|
static const NamedEnumTable< SwapChoice > names { { QStringLiteral( "none" ), SwapChoice::NoSwap },
|
||||||
|
{ QStringLiteral( "small" ), SwapChoice::SmallSwap },
|
||||||
|
{ QStringLiteral( "suspend" ), SwapChoice::FullSwap },
|
||||||
|
{ QStringLiteral( "reuse" ), SwapChoice::ReuseSwap },
|
||||||
|
{ QStringLiteral( "file" ), SwapChoice::SwapFile } };
|
||||||
|
|
||||||
static PartitionActions::Choices::SwapChoiceSet
|
return names;
|
||||||
|
}
|
||||||
|
|
||||||
|
Config::SwapChoice
|
||||||
|
pickOne( const Config::SwapChoiceSet& s )
|
||||||
|
{
|
||||||
|
if ( s.count() == 0 )
|
||||||
|
{
|
||||||
|
return Config::SwapChoice::NoSwap;
|
||||||
|
}
|
||||||
|
if ( s.count() == 1 )
|
||||||
|
{
|
||||||
|
return *( s.begin() );
|
||||||
|
}
|
||||||
|
if ( s.contains( Config::SwapChoice::NoSwap ) )
|
||||||
|
{
|
||||||
|
return Config::SwapChoice::NoSwap;
|
||||||
|
}
|
||||||
|
// Here, count > 1 but NoSwap is not a member.
|
||||||
|
return *( s.begin() );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static Config::SwapChoiceSet
|
||||||
getSwapChoices( const QVariantMap& configurationMap )
|
getSwapChoices( const QVariantMap& configurationMap )
|
||||||
{
|
{
|
||||||
// SWAP SETTINGS
|
// SWAP SETTINGS
|
||||||
@ -57,7 +88,7 @@ getSwapChoices( const QVariantMap& configurationMap )
|
|||||||
}
|
}
|
||||||
bool neverCreateSwap = CalamaresUtils::getBool( configurationMap, "neverCreateSwap", false );
|
bool neverCreateSwap = CalamaresUtils::getBool( configurationMap, "neverCreateSwap", false );
|
||||||
|
|
||||||
PartitionActions::Choices::SwapChoiceSet choices; // Available swap choices
|
Config::SwapChoiceSet choices; // Available swap choices
|
||||||
if ( configurationMap.contains( "userSwapChoices" ) )
|
if ( configurationMap.contains( "userSwapChoices" ) )
|
||||||
{
|
{
|
||||||
// We've already warned about overlapping settings with the
|
// We've already warned about overlapping settings with the
|
||||||
@ -67,7 +98,7 @@ getSwapChoices( const QVariantMap& configurationMap )
|
|||||||
for ( const auto& item : l )
|
for ( const auto& item : l )
|
||||||
{
|
{
|
||||||
bool ok = false;
|
bool ok = false;
|
||||||
auto v = PartitionActions::Choices::swapChoiceNames().find( item, ok );
|
auto v = Config::swapChoiceNames().find( item, ok );
|
||||||
if ( ok )
|
if ( ok )
|
||||||
{
|
{
|
||||||
choices.insert( v );
|
choices.insert( v );
|
||||||
@ -77,28 +108,28 @@ getSwapChoices( const QVariantMap& configurationMap )
|
|||||||
if ( choices.isEmpty() )
|
if ( choices.isEmpty() )
|
||||||
{
|
{
|
||||||
cWarning() << "Partition-module configuration for *userSwapChoices* is empty:" << l;
|
cWarning() << "Partition-module configuration for *userSwapChoices* is empty:" << l;
|
||||||
choices.insert( PartitionActions::Choices::SwapChoice::FullSwap );
|
choices.insert( Config::SwapChoice::FullSwap );
|
||||||
}
|
}
|
||||||
|
|
||||||
// suspend if it's one of the possible choices; suppress swap only if it's
|
// suspend if it's one of the possible choices; suppress swap only if it's
|
||||||
// the **only** choice available.
|
// the **only** choice available.
|
||||||
ensureSuspendToDisk = choices.contains( PartitionActions::Choices::SwapChoice::FullSwap );
|
ensureSuspendToDisk = choices.contains( Config::SwapChoice::FullSwap );
|
||||||
neverCreateSwap = ( choices.count() == 1 ) && choices.contains( PartitionActions::Choices::SwapChoice::NoSwap );
|
neverCreateSwap = ( choices.count() == 1 ) && choices.contains( Config::SwapChoice::NoSwap );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Convert the legacy settings into a single setting for now.
|
// Convert the legacy settings into a single setting for now.
|
||||||
if ( neverCreateSwap )
|
if ( neverCreateSwap )
|
||||||
{
|
{
|
||||||
choices.insert( PartitionActions::Choices::SwapChoice::NoSwap );
|
choices.insert( Config::SwapChoice::NoSwap );
|
||||||
}
|
}
|
||||||
else if ( ensureSuspendToDisk )
|
else if ( ensureSuspendToDisk )
|
||||||
{
|
{
|
||||||
choices.insert( PartitionActions::Choices::SwapChoice::FullSwap );
|
choices.insert( Config::SwapChoice::FullSwap );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
choices.insert( PartitionActions::Choices::SwapChoice::SmallSwap );
|
choices.insert( Config::SwapChoice::SmallSwap );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -109,11 +140,11 @@ getSwapChoices( const QVariantMap& configurationMap )
|
|||||||
if ( choices.contains( x ) ) \
|
if ( choices.contains( x ) ) \
|
||||||
{ \
|
{ \
|
||||||
bool bogus = false; \
|
bool bogus = false; \
|
||||||
cWarning() << unsupportedSetting << PartitionActions::Choices::swapChoiceNames().find( x, bogus ); \
|
cWarning() << unsupportedSetting << Config::swapChoiceNames().find( x, bogus ); \
|
||||||
choices.remove( x ); \
|
choices.remove( x ); \
|
||||||
}
|
}
|
||||||
|
|
||||||
COMPLAIN_UNSUPPORTED( PartitionActions::Choices::SwapChoice::ReuseSwap )
|
COMPLAIN_UNSUPPORTED( Config::SwapChoice::ReuseSwap )
|
||||||
#undef COMPLAIN_UNSUPPORTED
|
#undef COMPLAIN_UNSUPPORTED
|
||||||
|
|
||||||
return choices;
|
return choices;
|
||||||
@ -149,16 +180,16 @@ Config::setConfigurationMap( const QVariantMap& configurationMap )
|
|||||||
m_swapChoices = getSwapChoices( configurationMap );
|
m_swapChoices = getSwapChoices( configurationMap );
|
||||||
|
|
||||||
bool nameFound = false; // In the name table (ignored, falls back to first entry in table)
|
bool nameFound = false; // In the name table (ignored, falls back to first entry in table)
|
||||||
m_initialInstallChoice = Config::installChoiceNames().find(
|
m_initialInstallChoice = installChoiceNames().find(
|
||||||
CalamaresUtils::getString( configurationMap, "initialPartitioningChoice" ), nameFound );
|
CalamaresUtils::getString( configurationMap, "initialPartitioningChoice" ), nameFound );
|
||||||
setInstallChoice( m_initialInstallChoice );
|
setInstallChoice( m_initialInstallChoice );
|
||||||
|
|
||||||
m_initialSwapChoice = PartitionActions::Choices::swapChoiceNames().find(
|
m_initialSwapChoice
|
||||||
CalamaresUtils::getString( configurationMap, "initialSwapChoice" ), nameFound );
|
= swapChoiceNames().find( CalamaresUtils::getString( configurationMap, "initialSwapChoice" ), nameFound );
|
||||||
if ( !m_swapChoices.contains( m_initialSwapChoice ) )
|
if ( !m_swapChoices.contains( m_initialSwapChoice ) )
|
||||||
{
|
{
|
||||||
cWarning() << "Configuration for *initialSwapChoice* is not one of the *userSwapChoices*";
|
cWarning() << "Configuration for *initialSwapChoice* is not one of the *userSwapChoices*";
|
||||||
m_initialSwapChoice = PartitionActions::Choices::pickOne( m_swapChoices );
|
m_initialSwapChoice = pickOne( m_swapChoices );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
#ifndef PARTITION_CONFIG_H
|
#ifndef PARTITION_CONFIG_H
|
||||||
#define PARTITION_CONFIG_H
|
#define PARTITION_CONFIG_H
|
||||||
|
|
||||||
#include "core/PartitionActions.h"
|
#include "utils/NamedEnum.h"
|
||||||
|
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QSet>
|
#include <QSet>
|
||||||
@ -40,10 +40,23 @@ public:
|
|||||||
Q_ENUM( InstallChoice )
|
Q_ENUM( InstallChoice )
|
||||||
static const NamedEnumTable< InstallChoice >& installChoiceNames();
|
static const NamedEnumTable< InstallChoice >& installChoiceNames();
|
||||||
|
|
||||||
|
/** @brief Choice of swap (size and type) */
|
||||||
|
enum SwapChoice
|
||||||
|
{
|
||||||
|
NoSwap, // don't create any swap, don't use any
|
||||||
|
ReuseSwap, // don't create, but do use existing
|
||||||
|
SmallSwap, // up to 8GiB of swap
|
||||||
|
FullSwap, // ensureSuspendToDisk -- at least RAM size
|
||||||
|
SwapFile // use a file (if supported)
|
||||||
|
};
|
||||||
|
Q_ENUM( SwapChoice )
|
||||||
|
static const NamedEnumTable< SwapChoice >& swapChoiceNames();
|
||||||
|
using SwapChoiceSet = QSet< SwapChoice >;
|
||||||
|
|
||||||
void setConfigurationMap( const QVariantMap& );
|
void setConfigurationMap( const QVariantMap& );
|
||||||
void updateGlobalStorage() const;
|
void updateGlobalStorage() const;
|
||||||
|
|
||||||
PartitionActions::Choices::SwapChoiceSet swapChoices() const { return m_swapChoices; }
|
SwapChoiceSet swapChoices() const { return m_swapChoices; }
|
||||||
|
|
||||||
/** @brief What kind of installation (partitioning) is requested **initially**?
|
/** @brief What kind of installation (partitioning) is requested **initially**?
|
||||||
*
|
*
|
||||||
@ -65,7 +78,7 @@ public:
|
|||||||
*
|
*
|
||||||
* @return The swap choice (may be @c NoSwap )
|
* @return The swap choice (may be @c NoSwap )
|
||||||
*/
|
*/
|
||||||
PartitionActions::Choices::SwapChoice initialSwapChoice() const { return m_initialSwapChoice; }
|
SwapChoice initialSwapChoice() const { return m_initialSwapChoice; }
|
||||||
|
|
||||||
public Q_SLOTS:
|
public Q_SLOTS:
|
||||||
void setInstallChoice( int );
|
void setInstallChoice( int );
|
||||||
@ -75,12 +88,20 @@ Q_SIGNALS:
|
|||||||
void installChoiceChanged( InstallChoice );
|
void installChoiceChanged( InstallChoice );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
PartitionActions::Choices::SwapChoice m_initialSwapChoice;
|
SwapChoice m_initialSwapChoice;
|
||||||
PartitionActions::Choices::SwapChoiceSet m_swapChoices;
|
SwapChoiceSet m_swapChoices;
|
||||||
InstallChoice m_initialInstallChoice = NoChoice;
|
InstallChoice m_initialInstallChoice = NoChoice;
|
||||||
InstallChoice m_installChoice = NoChoice;
|
InstallChoice m_installChoice = NoChoice;
|
||||||
qreal m_requiredStorageGiB = 0.0; // May duplicate setting in the welcome module
|
qreal m_requiredStorageGiB = 0.0; // May duplicate setting in the welcome module
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/** @brief Given a set of swap choices, return a sensible value from it.
|
||||||
|
*
|
||||||
|
* "Sensible" here means: if there is one value, use it; otherwise, use
|
||||||
|
* NoSwap if there are no choices, or if NoSwap is one of the choices, in the set.
|
||||||
|
* If that's not possible, any value from the set.
|
||||||
|
*/
|
||||||
|
Config::SwapChoice pickOne( const Config::SwapChoiceSet& s );
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -35,9 +35,9 @@ using CalamaresUtils::operator""_GiB;
|
|||||||
using CalamaresUtils::operator""_MiB;
|
using CalamaresUtils::operator""_MiB;
|
||||||
|
|
||||||
qint64
|
qint64
|
||||||
swapSuggestion( const qint64 availableSpaceB, Choices::SwapChoice swap )
|
swapSuggestion( const qint64 availableSpaceB, Config::SwapChoice swap )
|
||||||
{
|
{
|
||||||
if ( ( swap != Choices::SmallSwap ) && ( swap != Choices::FullSwap ) )
|
if ( ( swap != Config::SwapChoice::SmallSwap ) && ( swap != Config::SwapChoice::FullSwap ) )
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -48,7 +48,7 @@ swapSuggestion( const qint64 availableSpaceB, Choices::SwapChoice swap )
|
|||||||
qint64 availableRamB = memory.first;
|
qint64 availableRamB = memory.first;
|
||||||
qreal overestimationFactor = memory.second;
|
qreal overestimationFactor = memory.second;
|
||||||
|
|
||||||
bool ensureSuspendToDisk = swap == Choices::FullSwap;
|
bool ensureSuspendToDisk = swap == Config::SwapChoice::FullSwap;
|
||||||
|
|
||||||
// Ramp up quickly to 8GiB, then follow memory size
|
// Ramp up quickly to 8GiB, then follow memory size
|
||||||
if ( availableRamB <= 4_GiB )
|
if ( availableRamB <= 4_GiB )
|
||||||
@ -149,7 +149,8 @@ doAutopartition( PartitionCoreModule* core, Device* dev, Choices::AutoPartitionO
|
|||||||
core->createPartitionTable( dev, PartitionTable::msdos );
|
core->createPartitionTable( dev, PartitionTable::msdos );
|
||||||
}
|
}
|
||||||
|
|
||||||
const bool mayCreateSwap = ( o.swap == Choices::SmallSwap ) || ( o.swap == Choices::FullSwap );
|
const bool mayCreateSwap
|
||||||
|
= ( o.swap == Config::SwapChoice::SmallSwap ) || ( o.swap == Config::SwapChoice::FullSwap );
|
||||||
bool shouldCreateSwap = false;
|
bool shouldCreateSwap = false;
|
||||||
qint64 suggestedSwapSizeB = 0;
|
qint64 suggestedSwapSizeB = 0;
|
||||||
|
|
||||||
@ -246,39 +247,4 @@ doReplacePartition( PartitionCoreModule* core, Device* dev, Partition* partition
|
|||||||
core->dumpQueue();
|
core->dumpQueue();
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace Choices
|
|
||||||
{
|
|
||||||
const NamedEnumTable< SwapChoice >&
|
|
||||||
swapChoiceNames()
|
|
||||||
{
|
|
||||||
static const NamedEnumTable< SwapChoice > names { { QStringLiteral( "none" ), SwapChoice::NoSwap },
|
|
||||||
{ QStringLiteral( "small" ), SwapChoice::SmallSwap },
|
|
||||||
{ QStringLiteral( "suspend" ), SwapChoice::FullSwap },
|
|
||||||
{ QStringLiteral( "reuse" ), SwapChoice::ReuseSwap },
|
|
||||||
{ QStringLiteral( "file" ), SwapChoice::SwapFile } };
|
|
||||||
|
|
||||||
return names;
|
|
||||||
}
|
|
||||||
|
|
||||||
SwapChoice
|
|
||||||
pickOne( const SwapChoiceSet& s )
|
|
||||||
{
|
|
||||||
if ( s.count() == 0 )
|
|
||||||
{
|
|
||||||
return SwapChoice::NoSwap;
|
|
||||||
}
|
|
||||||
if ( s.count() == 1 )
|
|
||||||
{
|
|
||||||
return *( s.begin() );
|
|
||||||
}
|
|
||||||
if ( s.contains( SwapChoice::NoSwap ) )
|
|
||||||
{
|
|
||||||
return SwapChoice::NoSwap;
|
|
||||||
}
|
|
||||||
// Here, count > 1 but NoSwap is not a member.
|
|
||||||
return *( s.begin() );
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace Choices
|
|
||||||
|
|
||||||
} // namespace PartitionActions
|
} // namespace PartitionActions
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
#ifndef PARTITIONACTIONS_H
|
#ifndef PARTITIONACTIONS_H
|
||||||
#define PARTITIONACTIONS_H
|
#define PARTITIONACTIONS_H
|
||||||
|
|
||||||
#include "utils/NamedEnum.h"
|
#include "core/Config.h"
|
||||||
|
|
||||||
#include <QSet>
|
#include <QSet>
|
||||||
#include <QString>
|
#include <QString>
|
||||||
@ -27,26 +27,6 @@ namespace PartitionActions
|
|||||||
*/
|
*/
|
||||||
namespace Choices
|
namespace Choices
|
||||||
{
|
{
|
||||||
/** @brief Choice of swap (size and type) */
|
|
||||||
enum SwapChoice
|
|
||||||
{
|
|
||||||
NoSwap, // don't create any swap, don't use any
|
|
||||||
ReuseSwap, // don't create, but do use existing
|
|
||||||
SmallSwap, // up to 8GiB of swap
|
|
||||||
FullSwap, // ensureSuspendToDisk -- at least RAM size
|
|
||||||
SwapFile // use a file (if supported)
|
|
||||||
};
|
|
||||||
using SwapChoiceSet = QSet< SwapChoice >;
|
|
||||||
const NamedEnumTable< SwapChoice >& swapChoiceNames();
|
|
||||||
|
|
||||||
/** @brief Given a set of swap choices, return a sensible value from it.
|
|
||||||
*
|
|
||||||
* "Sensible" here means: if there is one value, use it; otherwise, use
|
|
||||||
* NoSwap if there are no choices, or if NoSwap is one of the choices, in the set.
|
|
||||||
* If that's not possible, any value from the set.
|
|
||||||
*/
|
|
||||||
SwapChoice pickOne( const SwapChoiceSet& s );
|
|
||||||
|
|
||||||
struct ReplacePartitionOptions
|
struct ReplacePartitionOptions
|
||||||
{
|
{
|
||||||
QString defaultFsType; // e.g. "ext4" or "btrfs"
|
QString defaultFsType; // e.g. "ext4" or "btrfs"
|
||||||
@ -63,13 +43,13 @@ struct AutoPartitionOptions : ReplacePartitionOptions
|
|||||||
{
|
{
|
||||||
QString efiPartitionMountPoint; // optional, e.g. "/boot"
|
QString efiPartitionMountPoint; // optional, e.g. "/boot"
|
||||||
quint64 requiredSpaceB; // estimated required space for root partition
|
quint64 requiredSpaceB; // estimated required space for root partition
|
||||||
SwapChoice swap;
|
Config::SwapChoice swap;
|
||||||
|
|
||||||
AutoPartitionOptions( const QString& fs,
|
AutoPartitionOptions( const QString& fs,
|
||||||
const QString& luks,
|
const QString& luks,
|
||||||
const QString& efi,
|
const QString& efi,
|
||||||
qint64 requiredBytes,
|
qint64 requiredBytes,
|
||||||
SwapChoice s )
|
Config::SwapChoice s )
|
||||||
: ReplacePartitionOptions( fs, luks )
|
: ReplacePartitionOptions( fs, luks )
|
||||||
, efiPartitionMountPoint( efi )
|
, efiPartitionMountPoint( efi )
|
||||||
, requiredSpaceB( requiredBytes > 0 ? static_cast< quint64 >( requiredBytes ) : 0 )
|
, requiredSpaceB( requiredBytes > 0 ? static_cast< quint64 >( requiredBytes ) : 0 )
|
||||||
|
@ -60,7 +60,7 @@ using CalamaresUtils::Partition::findPartitionByPath;
|
|||||||
using CalamaresUtils::Partition::isPartitionFreeSpace;
|
using CalamaresUtils::Partition::isPartitionFreeSpace;
|
||||||
using CalamaresUtils::Partition::PartitionIterator;
|
using CalamaresUtils::Partition::PartitionIterator;
|
||||||
using InstallChoice = Config::InstallChoice;
|
using InstallChoice = Config::InstallChoice;
|
||||||
using PartitionActions::Choices::SwapChoice;
|
using SwapChoice = Config::SwapChoice;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief ChoicePage::ChoicePage is the default constructor. Called on startup as part of
|
* @brief ChoicePage::ChoicePage is the default constructor. Called on startup as part of
|
||||||
@ -433,8 +433,7 @@ ChoicePage::onEraseSwapChoiceChanged()
|
|||||||
{
|
{
|
||||||
if ( m_eraseSwapChoiceComboBox )
|
if ( m_eraseSwapChoiceComboBox )
|
||||||
{
|
{
|
||||||
m_eraseSwapChoice
|
m_eraseSwapChoice = static_cast< Config::SwapChoice >( m_eraseSwapChoiceComboBox->currentData().toInt() );
|
||||||
= static_cast< PartitionActions::Choices::SwapChoice >( m_eraseSwapChoiceComboBox->currentData().toInt() );
|
|
||||||
onActionChanged();
|
onActionChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,6 @@
|
|||||||
|
|
||||||
#include "core/Config.h"
|
#include "core/Config.h"
|
||||||
#include "core/OsproberEntry.h"
|
#include "core/OsproberEntry.h"
|
||||||
// #include "core/PartitionActions.h"
|
|
||||||
|
|
||||||
#include <QMutex>
|
#include <QMutex>
|
||||||
#include <QPointer>
|
#include <QPointer>
|
||||||
@ -43,7 +42,7 @@ class PartitionCoreModule;
|
|||||||
|
|
||||||
class Device;
|
class Device;
|
||||||
|
|
||||||
using SwapChoiceSet = QSet< PartitionActions::Choices::SwapChoice >;
|
using SwapChoiceSet = Config::SwapChoiceSet;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief The ChoicePage class is the first page of the partitioning interface.
|
* @brief The ChoicePage class is the first page of the partitioning interface.
|
||||||
@ -158,7 +157,7 @@ private:
|
|||||||
QString m_defaultFsType;
|
QString m_defaultFsType;
|
||||||
bool m_enableEncryptionWidget;
|
bool m_enableEncryptionWidget;
|
||||||
SwapChoiceSet m_availableSwapChoices; // What is available
|
SwapChoiceSet m_availableSwapChoices; // What is available
|
||||||
PartitionActions::Choices::SwapChoice m_eraseSwapChoice; // what is selected
|
Config::SwapChoice m_eraseSwapChoice; // what is selected
|
||||||
|
|
||||||
bool m_allowManualPartitioning;
|
bool m_allowManualPartitioning;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user