diff --git a/enzevalos_iphone/Base.lproj/Main.storyboard b/enzevalos_iphone/Base.lproj/Main.storyboard index da4b056e9cfdd5987f8756cd20ae31f9fb3b849a..5854b23e9ebb080454539c9ea487dff21c11b637 100644 --- a/enzevalos_iphone/Base.lproj/Main.storyboard +++ b/enzevalos_iphone/Base.lproj/Main.storyboard @@ -2124,7 +2124,7 @@ Um deine sicheren E-Mails auch auf einem anderen Gerät lesen zu können, muss d <nil key="textColor"/> <nil key="highlightedColor"/> </label> - <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" keyboardDismissMode="interactive" translatesAutoresizingMaskIntoConstraints="NO" id="OLH-mw-Ir8"> + <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" layoutMarginsFollowReadableWidth="YES" keyboardDismissMode="interactive" translatesAutoresizingMaskIntoConstraints="NO" id="OLH-mw-Ir8"> <rect key="frame" x="20" y="100.66666666666669" width="374" height="692.33333333333326"/> <color key="backgroundColor" cocoaTouchSystemColor="tableCellGroupedBackgroundColor"/> <fontDescription key="fontDescription" type="system" pointSize="14"/> diff --git a/enzevalos_iphone/ImportKeyOverviewController.swift b/enzevalos_iphone/ImportKeyOverviewController.swift index 16c6c8ef8427f44b57ce8bd490d39c6508e708df..2439bc4ede9a11c4a0e300ff8f0b51201e70948f 100644 --- a/enzevalos_iphone/ImportKeyOverviewController.swift +++ b/enzevalos_iphone/ImportKeyOverviewController.swift @@ -13,8 +13,15 @@ class ImportKeyOverviewController: UITableViewController, ButtonCellHandler { case iTunes, Paste } + enum KeyState { + case Public, Secret + } + + var currentState: KeyState = .Secret + override func viewDidLoad() { super.viewDidLoad() + print("Load view with state: \(currentState)") } // MARK: - Table view data source @@ -47,7 +54,11 @@ class ImportKeyOverviewController: UITableViewController, ButtonCellHandler { func touchDown(id: Int) { if id == KeyActions.iTunes.hashValue { // Call iTunes field - _ = KeyTableViewController.pushKeyTableView(navigationController: self.navigationController, type: .ImportKeyItunes) + var type = KeyTableViewController.KeyType.ImportPublicKeyItunes + if currentState == .Secret { + type = .ImportSecretKeyItunes + } + _ = KeyTableViewController.pushKeyTableView(navigationController: self.navigationController, type: type) } else if id == KeyActions.Paste.hashValue { // open Textfield to paste key _ = PasteKeyViewController.pushPasteKeyView(navigationController: self.navigationController) diff --git a/enzevalos_iphone/ItunesHandler.swift b/enzevalos_iphone/ItunesHandler.swift index 2320410b82dc9a5627e1735b38b568f4ff55fe80..7e5aec52a941b8dcdc4464b967d08fb0092b7167 100644 --- a/enzevalos_iphone/ItunesHandler.swift +++ b/enzevalos_iphone/ItunesHandler.swift @@ -42,6 +42,16 @@ class ItunesKeyHandling { return newSecretKeys } + func extractPublicKeys(withKnownKeys: Bool) -> [TempKey] { + var newPublicKeys = storedKeys.filter{!$0.isSecret} + if !withKnownKeys { + var knownIDs = DataHandler.handler.findPublicKeys().map{$0.keyID} + knownIDs = knownIDs.filter{return !($0 == "")} + newPublicKeys = newPublicKeys.filter{!knownIDs.contains($0.keyID)} + } + return newPublicKeys + } + var hasStoredKeys: Bool { get { return !keyURL.isEmpty diff --git a/enzevalos_iphone/KeyTableViewController.swift b/enzevalos_iphone/KeyTableViewController.swift index 0ae1b0e1a47adfe4a55ae842330851709254822d..76aa220ff94cee6b8241f3444678750dab8a785d 100644 --- a/enzevalos_iphone/KeyTableViewController.swift +++ b/enzevalos_iphone/KeyTableViewController.swift @@ -11,7 +11,7 @@ import UIKit class KeyTableViewController: UITableViewController { enum KeyType { - case PublicKey, SecretKey, ImportKeyItunes, ImportFromList + case PublicKey, SecretKey, ImportSecretKeyItunes, ImportPublicKeyItunes, ImportFromList } static func pushKeyTableView(navigationController: UINavigationController?, type:KeyType) -> KeyTableViewController? { @@ -44,12 +44,18 @@ class KeyTableViewController: UITableViewController { title = "Your IDs" secretKeys = DataHandler.handler.findSecretKeys() showAddButton = true - case .ImportKeyItunes: + case .ImportSecretKeyItunes: title = "New Secret Keys" importableKeys = ItunesKeyHandling.iTunesKeyHandler.extractSecretKeys(withKnownKeys: true) if importableKeys.count == 0 { onlyOneRow = true } + case .ImportPublicKeyItunes: + title = "New Public Keys" + importableKeys = ItunesKeyHandling.iTunesKeyHandler.extractPublicKeys(withKnownKeys: true) + if importableKeys.count == 0 { + onlyOneRow = true + } case .ImportFromList: title = "Extracted Keys" if importableKeys.count == 0 { @@ -58,6 +64,7 @@ class KeyTableViewController: UITableViewController { } self.title = title + print("Load view with title: \(title)") if showAddButton { self.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(addButton(btn:))) } @@ -69,12 +76,17 @@ class KeyTableViewController: UITableViewController { @objc private func addButton(btn: UIBarButtonItem) { - if type == .SecretKey { + if type == .SecretKey || type == .PublicKey { let mainStoryboard = UIStoryboard(name: "Main", bundle: Bundle.main) + var nextState = ImportKeyOverviewController.KeyState.Public + if type == .SecretKey { + nextState = .Secret + } if let viewController = mainStoryboard.instantiateViewController(withIdentifier: "ImportKeyOverview") as? ImportKeyOverviewController { + viewController.currentState = nextState self.navigationController?.pushViewController(viewController, animated: true) } - } + } } // MARK: - Table view data source @@ -89,7 +101,7 @@ class KeyTableViewController: UITableViewController { return publicKeys.count case .SecretKey: return secretKeys.count - case .ImportKeyItunes, .ImportFromList: + case .ImportSecretKeyItunes, .ImportFromList, .ImportPublicKeyItunes: if importableKeys.count == 0 { // Add warning to copy key in iTunes folder return 1 @@ -112,7 +124,7 @@ class KeyTableViewController: UITableViewController { cell.setLabels(key: publicKeys[indexPath.row]) case .SecretKey: cell.setLabels(key: secretKeys[indexPath.row]) - case .ImportKeyItunes, .ImportFromList: + case .ImportSecretKeyItunes, .ImportFromList, .ImportPublicKeyItunes: if importableKeys.count == 0 { let cell = UITableViewCell(style: .default, reuseIdentifier: "InfoCell") cell.accessoryType = .none @@ -164,7 +176,7 @@ class KeyTableViewController: UITableViewController { } } addr = mail ?? keyID - case .ImportKeyItunes, .ImportFromList: + case .ImportSecretKeyItunes, .ImportFromList, .ImportPublicKeyItunes: // Try to import key importKey(key: importableKeys[indexPath.row], indexPath: indexPath) pushView = false