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