You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
calamares-settings-ubuntu/common/modules/pkgselect/PackageSelectViewStep.h

144 lines
4.1 KiB

#ifndef PACKAGESELECTVIEWSTEP_H
#define PACKAGESELECTVIEWSTEP_H
#include <QObject>
#include <QVariantMap>
#include <QMap>
#include "DllMacro.h"
#include "utils/PluginFactory.h"
#include "viewpages/ViewStep.h"
namespace Ui {
class pkgselect;
}
class QCheckBox;
/**
* @class PackageSelectViewStep
* @brief A Calamares view step for selecting and customizing packages during installation.
*
* This class provides a user interface for selecting additional packages to install,
* managing installation modes, and handling network availability scenarios.
*/
class PLUGINDLLEXPORT PackageSelectViewStep : public Calamares::ViewStep
{
Q_OBJECT
public:
/**
* @brief Constructs a new PackageSelectViewStep object.
* @param parent The parent QObject.
*/
explicit PackageSelectViewStep(QObject* parent = nullptr);
/**
* @brief Destroys the PackageSelectViewStep object.
*/
~PackageSelectViewStep() override;
/**
* @brief Returns the display name of the step.
* @return The pretty name as a QString.
*/
QString prettyName() const override;
/**
* @brief Returns the widget associated with this step.
* @return A pointer to the QWidget.
*/
QWidget* widget() override;
/**
* @brief Returns the list of jobs to execute for this step.
* @return An empty Calamares::JobList.
*/
Calamares::JobList jobs() const override;
/**
* @brief Indicates whether the "Next" button is enabled.
* @return Always returns true.
*/
bool isNextEnabled() const override;
/**
* @brief Indicates whether the "Back" button is enabled.
* @return Always returns true.
*/
bool isBackEnabled() const override;
/**
* @brief Indicates whether the step is at the beginning.
* @return Always returns true.
*/
bool isAtBeginning() const override;
/**
* @brief Indicates whether the step is at the end.
* @return Always returns true.
*/
bool isAtEnd() const override;
/**
* @brief Activates the step, setting up the UI based on network availability and configuration.
*/
void onActivate() override;
/**
* @brief Handles actions to perform when leaving the step, such as storing selected packages.
*/
void onLeave() override;
/**
* @brief Sets the configuration map for the step.
* @param configurationMap The QVariantMap containing configuration data.
*/
void setConfigurationMap(const QVariantMap& configurationMap) override;
/**
* @brief Retrieves the current package selections.
* @return A QVariantMap of package selections.
*/
QVariantMap packageSelections() const { return m_packageSelections; }
public slots:
/**
* @brief Slot to handle checkbox toggle events.
* @param checked The new checked state of the checkbox.
*/
void updatePackageSelections(bool checked);
signals:
/**
* @brief Signal emitted when package selections change.
*/
void packageSelectionsChanged();
private:
/**
* @brief Retrieves the checkbox associated with a given package ID.
* @param id The package ID.
* @return A pointer to the QCheckBox, or nullptr if not found.
*/
QCheckBox* getCheckboxById(const QString& id) const;
/**
* @brief Checks if a given key exists in package selections and is set to true.
* @param key The key to check.
* @return True if the key exists and is true, otherwise false.
*/
bool exists_and_true(const QString& key) const;
QVariantMap m_packageSelections; ///< Stores the state of package selections.
Ui::pkgselect* ui; ///< Pointer to the UI class.
QWidget* m_widget; ///< Pointer to the main widget of the step.
QVariantMap m_configurationMap; ///< Stores configuration data.
QMap<QString, QCheckBox*> m_packageCheckBoxes; ///< Maps package IDs to their corresponding checkboxes.
bool m_connectionsMade; ///< Flag to ensure signal connections are made only once.
};
CALAMARES_PLUGIN_FACTORY_DECLARATION(PackageSelectViewStepFactory)
#endif // PACKAGESELECTVIEWSTEP_H