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