From e84108e2343b5ef4aa3a518c92402b3e57d9a0e5 Mon Sep 17 00:00:00 2001
From: Teo Mrnjavac <teo@kde.org>
Date: Fri, 3 Jun 2016 16:39:28 +0200
Subject: [PATCH] Add encryption support in
 PartitionActions::doReplacePartition.

---
 .../partition/core/PartitionActions.cpp       | 38 ++++++++++++++-----
 src/modules/partition/core/PartitionActions.h |  5 ++-
 src/modules/partition/gui/ChoicePage.cpp      |  3 +-
 3 files changed, 34 insertions(+), 12 deletions(-)

diff --git a/src/modules/partition/core/PartitionActions.cpp b/src/modules/partition/core/PartitionActions.cpp
index 00cf32abe0..cf7bc67a26 100644
--- a/src/modules/partition/core/PartitionActions.cpp
+++ b/src/modules/partition/core/PartitionActions.cpp
@@ -1,6 +1,6 @@
 /* === This file is part of Calamares - <http://github.com/calamares> ===
  *
- *   Copyright 2014-2015, Teo Mrnjavac <teo@kde.org>
+ *   Copyright 2014-2016, Teo Mrnjavac <teo@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
@@ -230,7 +230,10 @@ doAutopartition( PartitionCoreModule* core, Device* dev, const QString& luksPass
 
 
 void
-doReplacePartition( PartitionCoreModule* core, Device* dev, Partition* partition )
+doReplacePartition( PartitionCoreModule* core,
+                    Device* dev,
+                    Partition* partition,
+                    const QString& luksPassphrase )
 {
     cDebug() << "doReplacePartition for device" << partition->partitionPath();
 
@@ -250,13 +253,30 @@ doReplacePartition( PartitionCoreModule* core, Device* dev, Partition* partition
         }
     }
 
-    Partition* newPartition = KPMHelpers::createNewPartition(
-                                  partition->parent(),
-                                  *dev,
-                                  newRoles,
-                                  FileSystem::Ext4,
-                                  partition->firstSector(),
-                                  partition->lastSector() );
+    Partition* newPartition = nullptr;
+    if ( luksPassphrase.isEmpty() )
+    {
+        newPartition = KPMHelpers::createNewPartition(
+            partition->parent(),
+            *dev,
+            newRoles,
+            FileSystem::Ext4,
+            partition->firstSector(),
+            partition->lastSector()
+        );
+    }
+    else
+    {
+        newPartition = KPMHelpers::createNewEncryptedPartition(
+            partition->parent(),
+            *dev,
+            newRoles,
+            FileSystem::Ext4,
+            partition->firstSector(),
+            partition->lastSector(),
+            luksPassphrase
+        );
+    }
     PartitionInfo::setMountPoint( newPartition, "/" );
     PartitionInfo::setFormat( newPartition, true );
 
diff --git a/src/modules/partition/core/PartitionActions.h b/src/modules/partition/core/PartitionActions.h
index bf0559a49c..41871eb4c9 100644
--- a/src/modules/partition/core/PartitionActions.h
+++ b/src/modules/partition/core/PartitionActions.h
@@ -1,6 +1,6 @@
 /* === This file is part of Calamares - <http://github.com/calamares> ===
  *
- *   Copyright 2014-2015, Teo Mrnjavac <teo@kde.org>
+ *   Copyright 2014-2016, Teo Mrnjavac <teo@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
@@ -33,7 +33,8 @@ void doAutopartition( PartitionCoreModule* core,
 
 void doReplacePartition( PartitionCoreModule* core,
                          Device* dev,
-                         Partition* partition );
+                         Partition* partition,
+                         const QString& luksPassphrase = QString() );
 }
 
 #endif // PARTITIONACTIONS_H
diff --git a/src/modules/partition/gui/ChoicePage.cpp b/src/modules/partition/gui/ChoicePage.cpp
index 4884057a2a..6562e55c8b 100644
--- a/src/modules/partition/gui/ChoicePage.cpp
+++ b/src/modules/partition/gui/ChoicePage.cpp
@@ -661,7 +661,8 @@ ChoicePage::doReplaceSelectedPartition( const QModelIndex& current,
             if ( selectedPartition )
                 PartitionActions::doReplacePartition( m_core,
                                                       selectedDevice(),
-                                                      selectedPartition );
+                                                      selectedPartition,
+                                                      m_encryptWidget->passphrase() );
         }
     } ),
     [=]
-- 
GitLab