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_CREATEPARTITIONTABLEOPERATION_H 0010 #define KPMCORE_CREATEPARTITIONTABLEOPERATION_H 0011 0012 #include "util/libpartitionmanagerexport.h" 0013 0014 #include "ops/operation.h" 0015 0016 #include "core/partitiontable.h" 0017 0018 #include <QString> 0019 0020 class Device; 0021 class CreatePartitionTableJob; 0022 class PartitionTable; 0023 class OperationStack; 0024 0025 /** Create a PartitionTable. 0026 @author Volker Lanz <vl@fidra.de> 0027 */ 0028 class LIBKPMCORE_EXPORT CreatePartitionTableOperation : public Operation 0029 { 0030 Q_DISABLE_COPY(CreatePartitionTableOperation) 0031 0032 friend class OperationStack; 0033 0034 public: 0035 CreatePartitionTableOperation(Device& d, PartitionTable::TableType t); 0036 CreatePartitionTableOperation(Device& d, PartitionTable* ptable); 0037 ~CreatePartitionTableOperation(); 0038 0039 public: 0040 QString iconName() const override { 0041 return QStringLiteral("edit-clear"); 0042 } 0043 QString description() const override; 0044 void preview() override; 0045 void undo() override; 0046 bool execute(Report& parent) override; 0047 0048 bool targets(const Device& d) const override; 0049 bool targets(const Partition&) const override{ 0050 return false; 0051 } 0052 0053 static bool canCreate(const Device* device); 0054 0055 protected: 0056 Device& targetDevice() { 0057 return m_TargetDevice; 0058 } 0059 const Device& targetDevice() const { 0060 return m_TargetDevice; 0061 } 0062 0063 PartitionTable* partitionTable() { 0064 return m_PartitionTable; 0065 } 0066 const PartitionTable* partitionTable() const { 0067 return m_PartitionTable; 0068 } 0069 0070 PartitionTable* oldPartitionTable() { 0071 return m_OldPartitionTable; 0072 } 0073 void setOldPartitionTable(PartitionTable* old) { 0074 m_OldPartitionTable = old; 0075 } 0076 0077 CreatePartitionTableJob* createPartitionTableJob() { 0078 return m_CreatePartitionTableJob; 0079 } 0080 0081 private: 0082 Device& m_TargetDevice; 0083 PartitionTable* m_OldPartitionTable; 0084 PartitionTable* m_PartitionTable; 0085 CreatePartitionTableJob* m_CreatePartitionTableJob; 0086 }; 0087 0088 #endif