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

0001 /*
0002     SPDX-FileCopyrightText: 2016 Chantara Tith <tith.chantara@gmail.com>
0003     SPDX-FileCopyrightText: 2016-2017 Andrius Štikonas <andrius@stikonas.eu>
0004 
0005     SPDX-License-Identifier: GPL-3.0-or-later
0006 */
0007 
0008 #ifndef KPMCORE_RESIZEVOLUMEGROUPOPERATION_H
0009 #define KPMCORE_RESIZEVOLUMEGROUPOPERATION_H
0010 
0011 #include "util/libpartitionmanagerexport.h"
0012 
0013 #include "ops/operation.h"
0014 
0015 #include "core/lvmdevice.h"
0016 
0017 #include <QString>
0018 
0019 class ResizeVolumeGroupJob;
0020 class MovePhysicalVolumeJob;
0021 class OperationStack;
0022 class LvmDevice;
0023 
0024 class LIBKPMCORE_EXPORT ResizeVolumeGroupOperation : public Operation
0025 {
0026     Q_DISABLE_COPY(ResizeVolumeGroupOperation)
0027 
0028     friend class OperationStack;
0029 
0030 public:
0031     ResizeVolumeGroupOperation(LvmDevice& dev, const QVector<const Partition*>& partlist);
0032 
0033 public:
0034     QString iconName() const override {
0035         return QStringLiteral("arrow-right-double");
0036     }
0037 
0038     QString description() const override;
0039 
0040     virtual bool targets(const Device&) const override;
0041     virtual bool targets(const Partition&) const override;
0042 
0043     virtual void preview() override;
0044     virtual void undo() override;
0045 
0046     QStringList getToRemoveList();
0047     QStringList getToInsertList();
0048 
0049 protected:
0050     LvmDevice& device() {
0051         return m_Device;
0052     }
0053     const LvmDevice& device() const {
0054         return m_Device;
0055     }
0056     const QVector<const Partition*>& targetList() const {
0057         return m_TargetList;
0058     }
0059 
0060     const QVector<const Partition*>& currentList() const {
0061         return m_CurrentList;
0062     }
0063 
0064     qint64 targetSize() const {
0065         return m_TargetSize;
0066     }
0067 
0068     qint64 currentSize() const {
0069         return m_CurrentSize;
0070     }
0071 
0072     ResizeVolumeGroupJob* growVolumeGroupJob() {
0073         return m_GrowVolumeGroupJob;
0074     }
0075 
0076     ResizeVolumeGroupJob* shrinkvolumegroupjob() {
0077         return m_ShrinkVolumeGroupJob;
0078     }
0079 
0080     MovePhysicalVolumeJob* movePhysicalVolumeJob() {
0081         return m_MovePhysicalVolumeJob;
0082     }
0083 
0084 private:
0085     LvmDevice& m_Device;
0086 
0087     QVector<const Partition*> m_TargetList;
0088     QVector<const Partition*> m_CurrentList;
0089     qint64 m_TargetSize;
0090     qint64 m_CurrentSize;
0091 
0092     ResizeVolumeGroupJob *m_GrowVolumeGroupJob;
0093     ResizeVolumeGroupJob *m_ShrinkVolumeGroupJob;
0094     MovePhysicalVolumeJob *m_MovePhysicalVolumeJob;
0095 };
0096 
0097 #endif