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

0001 /*
0002     SPDX-FileCopyrightText: 2008-2010 Volker Lanz <vl@fidra.de>
0003     SPDX-FileCopyrightText: 2014-2016 Andrius Štikonas <andrius@stikonas.eu>
0004     SPDX-FileCopyrightText: 2015 Chris Campbell <c.j.campbell@ed.ac.uk>
0005 
0006     SPDX-License-Identifier: GPL-3.0-or-later
0007 */
0008 
0009 #ifndef KPMCORE_CREATEFILESYSTEMOPERATION_H
0010 #define KPMCORE_CREATEFILESYSTEMOPERATION_H
0011 
0012 #include "util/libpartitionmanagerexport.h"
0013 
0014 #include "ops/operation.h"
0015 
0016 #include "fs/filesystem.h"
0017 
0018 #include <QString>
0019 
0020 class Partition;
0021 class OperationStack;
0022 
0023 class DeleteFileSystemJob;
0024 class CreateFileSystemJob;
0025 class CheckFileSystemJob;
0026 
0027 /** Create a FileSystem.
0028 
0029     Creates a FileSystem on a given Partition and Device.
0030 
0031     @author Volker Lanz <vl@fidra.de>
0032 */
0033 class LIBKPMCORE_EXPORT CreateFileSystemOperation : public Operation
0034 {
0035     friend class OperationStack;
0036 
0037     Q_DISABLE_COPY(CreateFileSystemOperation)
0038 
0039 public:
0040     CreateFileSystemOperation(Device& d, Partition& p, FileSystem::Type newType);
0041     ~CreateFileSystemOperation();
0042 
0043 public:
0044     QString iconName() const override {
0045         return QStringLiteral("draw-eraser");
0046     }
0047     QString description() const override;
0048     void preview() override;
0049     void undo() override;
0050     bool execute(Report& parent) override;
0051 
0052     bool targets(const Device& d) const override;
0053     bool targets(const Partition& p) const override;
0054 
0055 protected:
0056     Device& targetDevice() {
0057         return m_TargetDevice;
0058     }
0059     const Device& targetDevice() const {
0060         return m_TargetDevice;
0061     }
0062 
0063     Partition& partition() {
0064         return m_Partition;
0065     }
0066     const Partition& partition() const {
0067         return m_Partition;
0068     }
0069 
0070     FileSystem* newFileSystem() const {
0071         return m_NewFileSystem;
0072     }
0073     FileSystem* oldFileSystem() const {
0074         return m_OldFileSystem;
0075     }
0076 
0077     DeleteFileSystemJob* deleteJob() {
0078         return m_DeleteJob;
0079     }
0080     CreateFileSystemJob* createJob() {
0081         return m_CreateJob;
0082     }
0083     CheckFileSystemJob* checkJob() {
0084         return m_CheckJob;
0085     }
0086 
0087 private:
0088     Device& m_TargetDevice;
0089     Partition& m_Partition;
0090     FileSystem* m_NewFileSystem;
0091     FileSystem* m_OldFileSystem;
0092     DeleteFileSystemJob* m_DeleteJob;
0093     CreateFileSystemJob* m_CreateJob;
0094     CheckFileSystemJob* m_CheckJob;
0095 };
0096 
0097 #endif