File indexing completed on 2024-05-05 05:48:52
0001 /* 0002 SPDX-FileCopyrightText: 2008-2010 Volker Lanz <vl@fidra.de> 0003 SPDX-FileCopyrightText: 2012-2016 Andrius Štikonas <andrius@stikonas.eu> 0004 SPDX-FileCopyrightText: 2015 Chris Campbell <c.j.campbell@ed.ac.uk> 0005 SPDX-FileCopyrightText: 2015 Teo Mrnjavac <teo@kde.org> 0006 SPDX-FileCopyrightText: 2020 Gaël PORTAY <gael.portay@collabora.com> 0007 0008 SPDX-License-Identifier: GPL-3.0-or-later 0009 */ 0010 0011 #ifndef KPMCORE_NEWOPERATION_H 0012 #define KPMCORE_NEWOPERATION_H 0013 0014 #include "fs/filesystem.h" 0015 #include "ops/operation.h" 0016 #include "util/libpartitionmanagerexport.h" 0017 0018 #include <QString> 0019 0020 struct NewOperationPrivate; 0021 class Device; 0022 class OperationStack; 0023 0024 class CreatePartitionJob; 0025 class SetPartitionLabelJob; 0026 class SetPartitionUUIDJob; 0027 class SetPartitionAttributesJob; 0028 class CreateFileSystemJob; 0029 class SetFileSystemLabelJob; 0030 class SetPartFlagsJob; 0031 class CheckFileSystemJob; 0032 0033 /** Create a Partition. 0034 0035 Creates the given Partition on the given Device. 0036 0037 @author Volker Lanz <vl@fidra.de> 0038 */ 0039 class LIBKPMCORE_EXPORT NewOperation : public Operation 0040 { 0041 friend class OperationStack; 0042 0043 Q_DISABLE_COPY(NewOperation) 0044 0045 public: 0046 NewOperation(Device& d, Partition* p); 0047 ~NewOperation(); 0048 0049 public: 0050 QString iconName() const override { 0051 return QStringLiteral("document-new"); 0052 } 0053 QString description() const override; 0054 void preview() override; 0055 void undo() override; 0056 0057 bool targets(const Device& d) const override; 0058 bool targets(const Partition& p) const override; 0059 0060 static bool canCreateNew(const Partition* p); 0061 static Partition* createNew(const Partition& cloneFrom, FileSystem::Type type); 0062 0063 protected: 0064 Partition& newPartition(); 0065 const Partition& newPartition() const; 0066 0067 Device& targetDevice(); 0068 const Device& targetDevice() const; 0069 0070 CreatePartitionJob* createPartitionJob(); 0071 SetPartitionLabelJob* setPartitionLabelJob(); 0072 SetPartitionUUIDJob* setPartitionUUIDJob(); 0073 SetPartitionAttributesJob* setPartitionAttributesJob(); 0074 CreateFileSystemJob* createFileSystemJob(); 0075 SetPartFlagsJob* setPartFlagsJob(); 0076 SetFileSystemLabelJob* setLabelJob(); 0077 CheckFileSystemJob* checkJob(); 0078 0079 private: 0080 std::unique_ptr<NewOperationPrivate> d_ptr; 0081 }; 0082 0083 #endif