File indexing completed on 2024-05-05 05:48:51

0001 /*
0002     SPDX-FileCopyrightText: 2016 Chantara Tith <tith.chantara@gmail.com>
0003     SPDX-FileCopyrightText: 2016-2017 Andrius Štikonas <andrius@stikonas.eu>
0004     SPDX-FileCopyrightText: 2018 Caio Jordão Carvalho <caiojcarvalho@gmail.com>
0005 
0006     SPDX-License-Identifier: GPL-3.0-or-later
0007 */
0008 
0009 #ifndef KPMCORE_CREATEVOLUMEGROUPOPERATION_H
0010 #define KPMCORE_CREATEVOLUMEGROUPOPERATION_H
0011 
0012 #include "util/libpartitionmanagerexport.h"
0013 
0014 #include "ops/operation.h"
0015 
0016 #include "core/lvmdevice.h"
0017 
0018 #include <QString>
0019 
0020 class CreateVolumeGroupJob;
0021 class OperationStack;
0022 
0023 class LIBKPMCORE_EXPORT CreateVolumeGroupOperation : public Operation
0024 {
0025     Q_DISABLE_COPY(CreateVolumeGroupOperation)
0026 
0027     friend class OperationStack;
0028 
0029 public:
0030     CreateVolumeGroupOperation(const QString& vgName, const QVector<const Partition*>& pvList, const qint32 peSize = 4);
0031 
0032 public:
0033     QString iconName() const override {
0034         return QStringLiteral("document-new");
0035     }
0036 
0037     QString description() const override;
0038 
0039     virtual bool targets(const Device&) const override {
0040         return true;
0041     }
0042     virtual bool targets(const Partition&) const override;
0043 
0044     virtual void preview() override;
0045     virtual void undo() override;
0046 
0047     static bool canCreate();
0048 
0049 protected:
0050     CreateVolumeGroupJob* createVolumeGroupJob() {
0051         return m_CreateVolumeGroupJob;
0052     }
0053 
0054     const QVector<const Partition*>& PVList() {
0055         return m_PVList;
0056     }
0057 
0058 private:
0059     CreateVolumeGroupJob* m_CreateVolumeGroupJob;
0060     const QVector<const Partition*> m_PVList;
0061     QString m_vgName;
0062 };
0063 
0064 #endif