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