calamares/src/modules/fsresizer/ResizeFSJob.h

72 lines
1.9 KiB
C
Raw Normal View History

/* === This file is part of Calamares - <https://calamares.io> ===
*
2020-08-22 01:19:58 +02:00
* SPDX-FileCopyrightText: 2018 Adriaan de Groot <groot@kde.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*
* Calamares is Free Software: see the License-Identifier above.
*
*/
#ifndef RESIZEFSJOB_H
#define RESIZEFSJOB_H
#include <QObject>
#include <QVariantMap>
#include "CppJob.h"
#include "partition/KPMManager.h"
#include "partition/PartitionSize.h"
#include "utils/PluginFactory.h"
#include "DllMacro.h"
class CoreBackend; // From KPMCore
class Device; // From KPMCore
class Partition;
using PartitionSize = CalamaresUtils::Partition::PartitionSize;
class PLUGINDLLEXPORT ResizeFSJob : public Calamares::CppJob
{
Q_OBJECT
public:
explicit ResizeFSJob( QObject* parent = nullptr );
~ResizeFSJob() override;
QString prettyName() const override;
Calamares::JobResult exec() override;
void setConfigurationMap( const QVariantMap& configurationMap ) override;
/** @brief Is the configuration of this job valid? */
2020-08-22 01:19:58 +02:00
bool isValid() const { return ( !m_fsname.isEmpty() || !m_devicename.isEmpty() ) && m_size.isValid(); }
QString name() const { return m_fsname.isEmpty() ? m_devicename : m_fsname; }
PartitionSize size() const { return m_size; }
PartitionSize minimumSize() const { return m_atleast; }
private:
CalamaresUtils::Partition::KPMManager m_kpmcore;
PartitionSize m_size;
PartitionSize m_atleast;
QString m_fsname; // Either this, or devicename, is set, not both
QString m_devicename;
bool m_required;
2020-08-22 01:19:58 +02:00
using PartitionMatch = QPair< Device*, Partition* >;
/** @brief Find the configured FS */
PartitionMatch findPartition();
/** @brief Return a new end-sector for the given dev-part pair. */
qint64 findGrownEnd( PartitionMatch );
};
CALAMARES_PLUGIN_FACTORY_DECLARATION( ResizeFSJobFactory )
2020-08-22 01:19:58 +02:00
#endif // RESIZEFSJOB_H