diff --git a/pass/LabelTableViewCell.swift b/pass/LabelTableViewCell.swift index 270ae20..5011dfd 100644 --- a/pass/LabelTableViewCell.swift +++ b/pass/LabelTableViewCell.swift @@ -20,7 +20,9 @@ class LabelTableViewCell: UITableViewCell { @IBOutlet weak var titleLabel: UILabel! var isPasswordCell = false + var isURLCell = false var isReveal = false + var password: Password? let passwordDots = "••••••••••••" var cellData: LabelTableViewCellData? { @@ -56,13 +58,16 @@ class LabelTableViewCell: UITableViewCell { return action == #selector(copy(_:)) || action == #selector(LabelTableViewCell.revealPassword(_:)) } } + if isURLCell { + return action == #selector(copy(_:)) || action == #selector(LabelTableViewCell.openLink(_:)) + } return action == #selector(copy(_:)) } override func copy(_ sender: Any?) { UIPasteboard.general.string = cellData?.content } - + func revealPassword(_ sender: Any?) { contentLabel.text = cellData?.content isReveal = true @@ -72,4 +77,9 @@ class LabelTableViewCell: UITableViewCell { contentLabel.text = passwordDots isReveal = false } + + func openLink(_ sender: Any?) { + UIPasteboard.general.string = password?.password + UIApplication.shared.open(NSURL(string: cellData!.content) as! URL, options: [:], completionHandler: nil) + } } diff --git a/pass/PasswordDetailTableViewController.swift b/pass/PasswordDetailTableViewController.swift index 6361ab9..78d958b 100644 --- a/pass/PasswordDetailTableViewController.swift +++ b/pass/PasswordDetailTableViewController.swift @@ -98,13 +98,15 @@ class PasswordDetailTableViewController: UITableViewController, UIGestureRecogni let menuController = UIMenuController.shared let revealItem = UIMenuItem(title: "Reveal", action: #selector(LabelTableViewCell.revealPassword(_:))) let concealItem = UIMenuItem(title: "Conceal", action: #selector(LabelTableViewCell.concealPassword(_:))) - menuController.menuItems = [revealItem, concealItem] + let openURLItem = UIMenuItem(title: "Copy Password & Open Link", action: #selector(LabelTableViewCell.openLink(_:))) + menuController.menuItems = [revealItem, concealItem, openURLItem] menuController.setTargetRect(tappedCell.contentLabel.frame, in: tappedCell.contentLabel.superview!) menuController.setMenuVisible(true, animated: true) } } } } + override func numberOfSections(in tableView: UITableView) -> Int { return tableData.count + 1 @@ -132,7 +134,9 @@ class PasswordDetailTableViewController: UITableViewController, UIGestureRecogni let cell = tableView.dequeueReusableCell(withIdentifier: "labelCell", for: indexPath) as! LabelTableViewCell let titleData = tableData[sectionIndex - 1].item[rowIndex].title let contentData = tableData[sectionIndex - 1].item[rowIndex].content - cell.isPasswordCell = (titleData == "password" ? true : false) + cell.password = password + cell.isPasswordCell = (titleData.lowercased() == "password" ? true : false) + cell.isURLCell = (titleData.lowercased() == "url" ? true : false) cell.cellData = LabelTableViewCellData(title: titleData, content: contentData) return cell }