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 Andrius Štikonas <andrius@stikonas.eu>
0004     SPDX-FileCopyrightText: 2019 Yuri Chornoivan <yurchor@ukr.net>
0005 
0006     SPDX-License-Identifier: GPL-3.0-or-later
0007 */
0008 
0009 #ifndef KPMCORE_DEACTIVATEVOLUMEGROUPOPERATION_H
0010 #define KPMCORE_DEACTIVATEVOLUMEGROUPOPERATION_H
0011 
0012 #include "util/libpartitionmanagerexport.h"
0013 
0014 #include "ops/operation.h"
0015 
0016 #include <QString>
0017 
0018 class DeactivateLogicalVolumeJob;
0019 class DeactivateVolumeGroupJob;
0020 class VolumeManagerDevice;
0021 class OperationStack;
0022 class PartitionTable;
0023 
0024 class LIBKPMCORE_EXPORT DeactivateVolumeGroupOperation : public Operation
0025 {
0026     Q_DISABLE_COPY(DeactivateVolumeGroupOperation)
0027 
0028     friend class OperationStack;
0029 
0030 public:
0031     explicit DeactivateVolumeGroupOperation(VolumeManagerDevice& d);
0032 
0033 public:
0034     QString iconName() const override {
0035         return QStringLiteral("edit-delete");
0036     }
0037 
0038     QString description() const override;
0039 
0040     virtual bool targets(const Device&) const override {
0041         return true;
0042     }
0043     virtual bool targets(const Partition&) const override {
0044         return false;
0045     }
0046 
0047     virtual void preview() override;
0048     virtual void undo() override;
0049 
0050     static bool isDeactivatable(const VolumeManagerDevice* dev);
0051 
0052 protected:
0053     DeactivateVolumeGroupJob* deactivateVolumeGroupJob() {
0054         return m_DeactivateVolumeGroupJob;
0055     }
0056 
0057     DeactivateLogicalVolumeJob* deactivateLogicalVolumeJob() {
0058         return m_DeactivateLogicalVolumeJob;
0059     }
0060 
0061     VolumeManagerDevice& device() {
0062         return m_Device;
0063     }
0064 
0065 private:
0066     DeactivateVolumeGroupJob* m_DeactivateVolumeGroupJob;
0067     DeactivateLogicalVolumeJob* m_DeactivateLogicalVolumeJob;
0068     VolumeManagerDevice& m_Device;
0069     PartitionTable* m_PartitionTable;
0070 };
0071 
0072 #endif