Introduce PartitionJob

This commit is contained in:
Aurélien Gâteau 2014-07-18 14:29:27 +02:00
parent 4516213b0b
commit d374d8bad8
9 changed files with 88 additions and 20 deletions

View File

@ -30,6 +30,7 @@ calamares_add_plugin( partition
DeviceModel.cpp
PartitionCoreModule.cpp
PartitionInfo.cpp
PartitionJob.cpp
PartitionModel.cpp
PartitionPage.cpp
PartitionViewStep.cpp

View File

@ -17,6 +17,7 @@
*/
#include <CreatePartitionJob.h>
#include <PartitionInfo.h>
#include <utils/Logger.h>
@ -36,8 +37,8 @@
#include <QScopedPointer>
CreatePartitionJob::CreatePartitionJob( Device* device, Partition* partition )
: m_device( device )
, m_partition( partition )
: PartitionJob( partition )
, m_device( device )
{
}

View File

@ -19,13 +19,13 @@
#ifndef CREATEPARTITIONJOB_H
#define CREATEPARTITIONJOB_H
#include <Job.h>
#include <PartitionJob.h>
class Device;
class Partition;
class FileSystem;
class CreatePartitionJob : public Calamares::Job
class CreatePartitionJob : public PartitionJob
{
Q_OBJECT
public:
@ -39,14 +39,8 @@ public:
return m_device;
}
Partition* partition() const
{
return m_partition;
}
private:
Device* m_device;
Partition* m_partition;
};
#endif /* CREATEPARTITIONJOB_H */

View File

@ -30,8 +30,8 @@
#include <util/report.h>
DeletePartitionJob::DeletePartitionJob( Device* device, Partition* partition )
: m_device( device )
, m_partition( partition )
: PartitionJob( partition )
, m_device( device )
{
}

View File

@ -19,13 +19,13 @@
#ifndef DELETEPARTITIONJOB_H
#define DELETEPARTITIONJOB_H
#include <Job.h>
#include <PartitionJob.h>
class Device;
class Partition;
class FileSystem;
class DeletePartitionJob : public Calamares::Job
class DeletePartitionJob : public PartitionJob
{
Q_OBJECT
public:
@ -39,14 +39,8 @@ public:
return m_device;
}
Partition* partition() const
{
return m_partition;
}
private:
Device* m_device;
Partition* m_partition;
FileSystem* m_fs;
};

View File

@ -257,6 +257,15 @@ PartitionCoreModule::deletePartition( Device* device, Partition* partition )
}
else
{
// Remove any PartitionJob on this partition
for ( auto it = jobs.begin(); it != jobs.end(); )
{
PartitionJob* job = qobject_cast< PartitionJob* >( it->data() );
if ( job && job->partition() == partition )
it = jobs.erase( it );
else
++it;
}
DeletePartitionJob* job = new DeletePartitionJob( device, partition );
job->updatePreview();
jobs << Calamares::job_ptr( job );

View File

@ -0,0 +1,23 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
*
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
*
* Calamares is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Calamares is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Calamares. If not, see <http://www.gnu.org/licenses/>.
*/
#include <PartitionJob.h>
PartitionJob::PartitionJob( Partition* partition )
: m_partition( partition )
{}

View File

@ -0,0 +1,44 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
*
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
*
* Calamares is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Calamares is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Calamares. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef PARTITIONJOB_H
#define PARTITIONJOB_H
#include <Job.h>
class Partition;
/**
* Base class for jobs which affect a partition
*/
class PartitionJob : public Calamares::Job
{
Q_OBJECT
public:
PartitionJob( Partition* partition );
Partition* partition() const
{
return m_partition;
}
protected:
Partition* m_partition;
};
#endif /* PARTITIONJOB_H */

View File

@ -5,6 +5,8 @@ set( jobtests_SRCS
${PartitionModule_SOURCE_DIR}/CreatePartitionJob.cpp
${PartitionModule_SOURCE_DIR}/CreatePartitionTableJob.cpp
${PartitionModule_SOURCE_DIR}/DeletePartitionJob.cpp
${PartitionModule_SOURCE_DIR}/PartitionInfo.cpp
${PartitionModule_SOURCE_DIR}/PartitionJob.cpp
${PartitionModule_SOURCE_DIR}/PMUtils.cpp
JobTests.cpp
)