diff --git a/MiniScanner.xcworkspace/xcuserdata/g.makhoul.xcuserdatad/UserInterfaceState.xcuserstate b/MiniScanner.xcworkspace/xcuserdata/g.makhoul.xcuserdatad/UserInterfaceState.xcuserstate index 340fe90c952c0f2dcb05b5ab6008b78d29789935..5e76acd9ed654760749a676de46f250998a23f61 100644 Binary files a/MiniScanner.xcworkspace/xcuserdata/g.makhoul.xcuserdatad/UserInterfaceState.xcuserstate and b/MiniScanner.xcworkspace/xcuserdata/g.makhoul.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/MiniScanner.xcworkspace/xcuserdata/g.makhoul.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/MiniScanner.xcworkspace/xcuserdata/g.makhoul.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist index 216ee44a169a423c337b1cc8c733a132117605a0..dbea0bb448a5dc39516d91e83635a85983aa4a05 100644 --- a/MiniScanner.xcworkspace/xcuserdata/g.makhoul.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ b/MiniScanner.xcworkspace/xcuserdata/g.makhoul.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -3,4 +3,22 @@ uuid = "270C854E-19C5-4254-A77F-7774BFB2FDA6" type = "0" version = "2.0"> + <Breakpoints> + <BreakpointProxy + BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint"> + <BreakpointContent + uuid = "781CC172-B153-4DD6-BA44-38196A7A37FD" + shouldBeEnabled = "Yes" + ignoreCount = "0" + continueAfterRunningActions = "No" + filePath = "MiniScanner/Modules/EditViewController/EditViewController.swift" + startingColumnNumber = "9223372036854775807" + endingColumnNumber = "9223372036854775807" + startingLineNumber = "219" + endingLineNumber = "219" + landmarkName = "saveFileAndShare(with:name:)" + landmarkType = "7"> + </BreakpointContent> + </BreakpointProxy> + </Breakpoints> </Bucket> diff --git a/MiniScanner/Managers/PDFManager.swift b/MiniScanner/Managers/PDFManager.swift index 0988eaf10c27eb18d605d08435872a8bb7647517..e699bbf8e7be9a14e383b1db8736fa4b2ebc5e81 100644 --- a/MiniScanner/Managers/PDFManager.swift +++ b/MiniScanner/Managers/PDFManager.swift @@ -105,8 +105,9 @@ class PDFManager { let document = PDFDocument() let dispatchGroup = DispatchGroup() - - // Iterate through image URLs + + var pdfPages = [PDFPage?](repeating: nil, count: imageURLs.count) + for (index, imageURL) in imageURLs.enumerated() { dispatchGroup.enter() DispatchQueue.global().async { @@ -114,18 +115,7 @@ class PDFManager { let image = UIImage(data: data), let pdfPage = PDFPage(image: image) { DispatchQueue.main.async { - document.insert(pdfPage, at: index) - if document.pageCount == imageURLs.count { - do { - try document.dataRepresentation()?.write(to: urlPDFtoSave) - if folder.savedName != "all_documents" { - try document.dataRepresentation()?.write(to: urlPDFtoSaveInAllDoc) - } - completion() - } catch { - print(error.localizedDescription) // handle error - } - } + pdfPages[index] = pdfPage dispatchGroup.leave() } } else { @@ -133,11 +123,67 @@ class PDFManager { } } } + dispatchGroup.notify(queue: .main) { + for pdfPage in pdfPages { + if let pdfPage = pdfPage { + document.insert(pdfPage, at: document.pageCount) + } + } + + do { + try document.dataRepresentation()?.write(to: urlPDFtoSave) + if folder.savedName != "all_documents" { + try document.dataRepresentation()?.write(to: urlPDFtoSaveInAllDoc) + } + completion() + } catch { + print(error.localizedDescription) // handle error + } + print("All images have been processed") } } +// class func createMultiPDFPageAndReturn(from imageURLs: [URL], localFileManager: LocalFileManager?, folder: AppConfigurator.Folder, name: String = "", _ completion: @escaping (URL) -> ()) { +// guard let scannerURL = localFileManager?.getFolderUrl(folder: folder) else { return } +// +// let urlPDFtoSave = scannerURL.appendingPathComponent(name == "" ? String.getDocumentName() : "\(name).pdf") +// +// if imageURLs.isEmpty { return } +// let document = PDFDocument() +// +// let dispatchGroup = DispatchGroup() +// +// // Iterate through image URLs +// for (index, imageURL) in imageURLs.enumerated() { +// dispatchGroup.enter() +// DispatchQueue.global().async { +// if let data = try? Data(contentsOf: imageURL), +// let image = UIImage(data: data), +// let pdfPage = PDFPage(image: image) { +// DispatchQueue.main.async { +// document.insert(pdfPage, at: index) +// if document.pageCount == imageURLs.count { +// do { +// try document.dataRepresentation()?.write(to: urlPDFtoSave) +// completion(urlPDFtoSave) +// } catch { +// print(error.localizedDescription) // handle error +// } +// } +// dispatchGroup.leave() +// } +// } else { +// dispatchGroup.leave() +// } +// } +// } +// dispatchGroup.notify(queue: .main) { +// print("All images have been processed") +// } +// } + class func createMultiPDFPageAndReturn(from imageURLs: [URL], localFileManager: LocalFileManager?, folder: AppConfigurator.Folder, name: String = "", _ completion: @escaping (URL) -> ()) { guard let scannerURL = localFileManager?.getFolderUrl(folder: folder) else { return } @@ -147,6 +193,9 @@ class PDFManager { let document = PDFDocument() let dispatchGroup = DispatchGroup() + + // Create an array of optional PDFPage with a size equal to the number of images + var pdfPages = [PDFPage?](repeating: nil, count: imageURLs.count) // Iterate through image URLs for (index, imageURL) in imageURLs.enumerated() { @@ -156,15 +205,8 @@ class PDFManager { let image = UIImage(data: data), let pdfPage = PDFPage(image: image) { DispatchQueue.main.async { - document.insert(pdfPage, at: index) - if document.pageCount == imageURLs.count { - do { - try document.dataRepresentation()?.write(to: urlPDFtoSave) - completion(urlPDFtoSave) - } catch { - print(error.localizedDescription) // handle error - } - } + // Insert the resulting PDFPage into pdfPages at the corresponding index + pdfPages[index] = pdfPage dispatchGroup.leave() } } else { @@ -173,6 +215,20 @@ class PDFManager { } } dispatchGroup.notify(queue: .main) { + // Once all images are processed, insert the pages from pdfPages into the PDFDocument in order + for pdfPage in pdfPages { + if let pdfPage = pdfPage { + document.insert(pdfPage, at: document.pageCount) + } + } + + do { + try document.dataRepresentation()?.write(to: urlPDFtoSave) + completion(urlPDFtoSave) + } catch { + print(error.localizedDescription) // handle error + } + print("All images have been processed") } } diff --git a/MiniScanner/Modules/EditViewController/EditViewController.swift b/MiniScanner/Modules/EditViewController/EditViewController.swift index 03b6ffef12dab3794522305d4b23c0a42299c77c..f825ff433f830646460f7a39373cb4f25e4c2660 100644 --- a/MiniScanner/Modules/EditViewController/EditViewController.swift +++ b/MiniScanner/Modules/EditViewController/EditViewController.swift @@ -8,7 +8,7 @@ import UIKit import LNExtensionExecutor - +import NBBottomSheet public protocol EditViewControllerDelegate: NSObjectProtocol { func editViewController(_ editViewController: EditViewController, finished session: MultiPageScanSession) } @@ -17,6 +17,7 @@ public class EditViewController: UIViewController { // MARK: - Outlets @IBOutlet weak var banner: BannerView! @IBOutlet weak var pageIndex: UILabel! + @IBOutlet weak var continueButton: UIButton! // MARK: - Properties private var scanSession:MultiPageScanSession? @@ -24,7 +25,10 @@ public class EditViewController: UIViewController { weak public var delegate:EditViewControllerDelegate? private var selectedIndex: Int = 0 var payload: [Any] = [] - + private var sharedFolder: AppConfigurator.Folder? = AppConfigurator.Folder(name: "Shared", savedName: "shared", isSelected: true) + var selectedFolder: AppConfigurator.Folder? + private var localFileManager: LocalFileManager? + lazy private var activityIndicator: UIActivityIndicatorView = { let activityIndicator = UIActivityIndicatorView(style: .large) activityIndicator.color = .white @@ -42,6 +46,12 @@ public class EditViewController: UIViewController { updatePageLabel() } view.addSubview(activityIndicator) + continueButton.backgroundColor = .mainBlue + continueButton.setTitle("Continue", for: .normal) + continueButton.setTitleColor(.white, for: .normal) + continueButton.layer.cornerRadius = 10 + localFileManager = LocalFileManager() + } @IBAction func backIndex(_ sender: UIButton) { @@ -70,12 +80,24 @@ public class EditViewController: UIViewController { updatePageLabel() } + @IBAction func continueTapped(_ sender: UIButton) { + let popup = ShareSheetViewController() + popup.session = self.scanSession + popup.delegate = self + popup.selectedFolder = self.selectedFolder + let configuration = NBBottomSheetConfiguration(animationDuration: 0.4, sheetSize: .fixed(322)) + + let bottomSheetController = NBBottomSheetController(configuration: configuration) + bottomSheetController.present(popup, on: self) + } + public init(scanSession: MultiPageScanSession){ self.scanSession = scanSession super.init(nibName: nil, bundle: nil) } required init?(coder aDecoder: NSCoder) { + scanSession = MultiPageScanSession() fatalError("init(coder:) should not be called for this class") } @@ -187,4 +209,100 @@ extension EditViewController: BannerViewDelegate { selectedIndex = index updatePageLabel() } + + private func saveFileAndShare(with: String, name: String) { + activityIndicator.startAnimating() + + var images = [URL]() + for index in 0..<(scanSession?.scannedItems.count ?? 0) { + if let url = scanSession?.scannedItems[index].renderedImage { + images.append(url) + } + } + print("images: \(images)") + if let folder = sharedFolder { + PDFManager.createMultiPDFPageAndReturn(from: images, localFileManager: localFileManager, folder: folder, name: name, { document in + self.payload = [document] + Task { + await self.directShareWith(extensionBundleIdentifier: with) + } + }) + } + } +} + +// MARK: - ShareSheetViewControllerDelegate +extension EditViewController: ShareSheetViewControllerDelegate { + func whatsappTapped(name: String) { + DispatchQueue.main.async { + self.saveFileAndShare(with: ShareOptions.whatsapp, name: name) + } + } + + func telegramTapped(name: String) { + DispatchQueue.main.async { + self.saveFileAndShare(with: ShareOptions.telegram, name: name) + } + } + + func airdropTapped(name: String) { + DispatchQueue.main.async { + self.saveFileAndShare(with: ShareOptions.gmail, name: name) + } + + } + + func printTapped() { + var images = [URL]() + for index in 0..<(scanSession?.scannedItems.count ?? 0) { + if let url = scanSession?.scannedItems[index].renderedImage { + images.append(url) + } + } + print("images: \(images)") + if let folder = sharedFolder { + PDFManager.createMultiPDFPageAndReturn(from: images, localFileManager: localFileManager, folder: folder, { document in + self.printPDF(from: document) + }) + } + + } + + func moreTapped(name: String) { + activityIndicator.startAnimating() + var images = [URL]() + for index in 0..<(scanSession?.scannedItems.count ?? 0) { + if let url = scanSession?.scannedItems[index].renderedImage { + images.append(url) + } + } + print("images: \(images)") + if let folder = sharedFolder { + PDFManager.createMultiPDFPageAndReturn(from: images, localFileManager: localFileManager, folder: folder, name: name, { document in + self.payload = [document] + let shareController = UIActivityViewController(activityItems: self.payload, applicationActivities: nil) + self.present(shareController, animated: true, completion: nil) + self.activityIndicator.stopAnimating() + + + }) + } + } + + func saveTapped(name: String) { + activityIndicator.startAnimating() + var images = [URL]() + for index in 0..<(scanSession?.scannedItems.count ?? 0) { + if let url = scanSession?.scannedItems[index].originalImage { + images.append(url) + } + } + print("images: \(images)") + if let folder = selectedFolder { + PDFManager.createMultiPDFPage(from: images, localFileManager: localFileManager, folder: folder, name: name, { + self.activityIndicator.stopAnimating() + self.navigationController?.popViewController(animated: true) + }) + } + } } diff --git a/MiniScanner/Modules/EditViewController/EditViewController.xib b/MiniScanner/Modules/EditViewController/EditViewController.xib index a3a7a237a59bbb5481ba3cb6362863c921729848..988d9c9399b8d2f72145fff077335d8921c38da4 100644 --- a/MiniScanner/Modules/EditViewController/EditViewController.xib +++ b/MiniScanner/Modules/EditViewController/EditViewController.xib @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="22155" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> - <device id="retina6_12" orientation="portrait" appearance="light"/> + <device id="retina6_72" orientation="portrait" appearance="light"/> <dependencies> <deployment identifier="iOS"/> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22131"/> @@ -12,29 +12,30 @@ <array key="Poppins-Medium.ttf"> <string>Poppins-Medium</string> </array> + <array key="Poppins-Regular.ttf"> + <string>Poppins-Regular</string> + </array> </customFonts> <objects> <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="EditViewController" customModule="MiniScanner" customModuleProvider="target"> <connections> <outlet property="banner" destination="4ep-ST-cZS" id="WFR-ov-H7F"/> + <outlet property="continueButton" destination="jE5-UT-fB1" id="v74-7i-T0B"/> <outlet property="pageIndex" destination="cqF-h7-7PR" id="KbK-o3-cPN"/> <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/> </connections> </placeholder> <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT"> - <rect key="frame" x="0.0" y="0.0" width="393" height="852"/> + <rect key="frame" x="0.0" y="0.0" width="430" height="932"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <subviews> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="4ep-ST-cZS" customClass="BannerView" customModule="MiniScanner" customModuleProvider="target"> - <rect key="frame" x="0.0" y="85" width="393" height="450"/> + <rect key="frame" x="0.0" y="85" width="430" height="540"/> <color key="backgroundColor" systemColor="systemBackgroundColor"/> - <constraints> - <constraint firstAttribute="height" constant="450" id="Lhx-9u-ceN"/> - </constraints> </view> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="7Fw-PR-xtE"> - <rect key="frame" x="114.66666666666669" y="560" width="164" height="40"/> + <rect key="frame" x="133" y="650" width="164" height="40"/> <subviews> <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="controller" translatesAutoresizingMaskIntoConstraints="NO" id="c82-Cp-Eo4"> <rect key="frame" x="0.0" y="0.0" width="164" height="40"/> @@ -61,7 +62,7 @@ </connections> </button> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="1/4" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cqF-h7-7PR"> - <rect key="frame" x="39.999999999999986" y="0.0" width="84" height="40"/> + <rect key="frame" x="40" y="0.0" width="84" height="40"/> <fontDescription key="fontDescription" type="system" pointSize="17"/> <nil key="textColor"/> <nil key="highlightedColor"/> @@ -87,100 +88,231 @@ <constraint firstItem="3Oy-6E-tPl" firstAttribute="leading" secondItem="7Fw-PR-xtE" secondAttribute="leading" id="x7d-hj-T82"/> </constraints> </view> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="s7Z-Yw-lu7"> - <rect key="frame" x="0.0" y="637" width="393" height="1"/> - <color key="backgroundColor" red="0.39215686274509803" green="0.39215686274509803" blue="0.39215686274509803" alpha="1" colorSpace="calibratedRGB"/> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="IBl-5l-IBa"> + <rect key="frame" x="0.0" y="720" width="430" height="112"/> + <subviews> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="s7Z-Yw-lu7"> + <rect key="frame" x="0.0" y="0.0" width="430" height="1"/> + <color key="backgroundColor" red="0.39215686274509803" green="0.39215686274509803" blue="0.39215686274509803" alpha="1" colorSpace="calibratedRGB"/> + <constraints> + <constraint firstAttribute="height" constant="1" id="b33-Z4-kSQ"/> + </constraints> + </view> + <label opaque="NO" userInteractionEnabled="NO" contentMode="center" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Direct Share" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Kl7-O6-xwc"> + <rect key="frame" x="166" y="13" width="98.333333333333314" height="22"/> + <fontDescription key="fontDescription" name="Poppins-Medium" family="Poppins" pointSize="16"/> + <nil key="textColor"/> + <nil key="highlightedColor"/> + </label> + <stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" spacing="12.5" translatesAutoresizingMaskIntoConstraints="NO" id="ZwN-3q-O93"> + <rect key="frame" x="70" y="50" width="290" height="48"/> + <subviews> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="fla-g2-Pdd"> + <rect key="frame" x="0.0" y="0.0" width="48" height="48"/> + <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> + <state key="normal" image="more"/> + <connections> + <action selector="moreTapped:" destination="-1" eventType="touchUpInside" id="YbX-KR-hP2"/> + </connections> + </button> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Z1c-YS-zHn"> + <rect key="frame" x="60.666666666666657" y="0.0" width="47.666666666666657" height="48"/> + <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> + <state key="normal" image="print"/> + <connections> + <action selector="printTapped:" destination="-1" eventType="touchUpInside" id="yRu-RH-LWQ"/> + </connections> + </button> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="cU4-SH-dvs"> + <rect key="frame" x="121" y="0.0" width="48" height="48"/> + <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> + <state key="normal" image="gmail"/> + <connections> + <action selector="gmailTapped:" destination="-1" eventType="touchUpInside" id="poW-WI-acw"/> + </connections> + </button> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Whx-iK-x70"> + <rect key="frame" x="181.66666666666666" y="0.0" width="47.666666666666657" height="48"/> + <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> + <state key="normal" image="telegram"/> + <connections> + <action selector="telegramTapped:" destination="-1" eventType="touchUpInside" id="YoB-5c-aP4"/> + </connections> + </button> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="tF8-Lh-ilb"> + <rect key="frame" x="242" y="0.0" width="48" height="48"/> + <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> + <state key="normal" image="whatsapp"/> + <connections> + <action selector="whatsappShare:" destination="-1" eventType="touchUpInside" id="DwL-37-TTO"/> + </connections> + </button> + </subviews> + <constraints> + <constraint firstAttribute="height" constant="48" id="fv8-wN-VCS"/> + <constraint firstAttribute="width" constant="290" id="qa6-FY-tCL"/> + </constraints> + </stackView> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Z2A-Ww-p2a"> + <rect key="frame" x="0.0" y="111" width="430" height="1"/> + <color key="backgroundColor" red="0.3921568627" green="0.3921568627" blue="0.3921568627" alpha="1" colorSpace="calibratedRGB"/> + <constraints> + <constraint firstAttribute="height" constant="1" id="XM1-pT-dSi"/> + </constraints> + </view> + </subviews> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> <constraints> - <constraint firstAttribute="height" constant="1" id="b33-Z4-kSQ"/> + <constraint firstAttribute="bottom" secondItem="Z2A-Ww-p2a" secondAttribute="bottom" id="8aq-cp-sk6"/> + <constraint firstItem="Kl7-O6-xwc" firstAttribute="centerX" secondItem="IBl-5l-IBa" secondAttribute="centerX" id="EGR-Xd-YA7"/> + <constraint firstItem="ZwN-3q-O93" firstAttribute="centerX" secondItem="IBl-5l-IBa" secondAttribute="centerX" id="GBw-y2-Khv"/> + <constraint firstItem="Z2A-Ww-p2a" firstAttribute="leading" secondItem="IBl-5l-IBa" secondAttribute="leading" id="GQY-TR-eyp"/> + <constraint firstAttribute="height" constant="112" id="K2L-Wg-RG2"/> + <constraint firstItem="ZwN-3q-O93" firstAttribute="top" secondItem="Kl7-O6-xwc" secondAttribute="bottom" constant="15" id="Kc9-bt-1KG"/> + <constraint firstAttribute="trailing" secondItem="s7Z-Yw-lu7" secondAttribute="trailing" id="NAx-Ar-NJV"/> + <constraint firstItem="s7Z-Yw-lu7" firstAttribute="leading" secondItem="IBl-5l-IBa" secondAttribute="leading" id="NBJ-Tg-ZZ4"/> + <constraint firstAttribute="trailing" secondItem="Z2A-Ww-p2a" secondAttribute="trailing" id="PLK-9Q-FVX"/> + <constraint firstAttribute="bottom" secondItem="Z2A-Ww-p2a" secondAttribute="bottom" id="U3E-XX-N2P"/> + <constraint firstItem="s7Z-Yw-lu7" firstAttribute="top" secondItem="IBl-5l-IBa" secondAttribute="top" id="WeK-3F-6wd"/> + <constraint firstItem="Z2A-Ww-p2a" firstAttribute="top" secondItem="ZwN-3q-O93" secondAttribute="bottom" constant="13" id="ZtI-JW-Hpq"/> + <constraint firstItem="Kl7-O6-xwc" firstAttribute="top" secondItem="s7Z-Yw-lu7" secondAttribute="bottom" constant="12" id="lWg-uF-AVW"/> </constraints> </view> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Direct Share" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Kl7-O6-xwc"> - <rect key="frame" x="147.33333333333334" y="650" width="98.333333333333343" height="22.666666666666629"/> - <fontDescription key="fontDescription" name="Poppins-Medium" family="Poppins" pointSize="16"/> - <nil key="textColor"/> - <nil key="highlightedColor"/> - </label> - <stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" spacing="12.5" translatesAutoresizingMaskIntoConstraints="NO" id="ZwN-3q-O93"> - <rect key="frame" x="51.666666666666657" y="687.66666666666663" width="290" height="48"/> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="aGp-MO-3Od"> + <rect key="frame" x="0.0" y="832" width="430" height="100"/> <subviews> - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="fla-g2-Pdd"> - <rect key="frame" x="0.0" y="0.0" width="47.666666666666664" height="48"/> - <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> - <state key="normal" image="more"/> - <connections> - <action selector="moreTapped:" destination="-1" eventType="touchUpInside" id="YbX-KR-hP2"/> - </connections> - </button> - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Z1c-YS-zHn"> - <rect key="frame" x="60.333333333333343" y="0.0" width="48" height="48"/> - <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> - <state key="normal" image="print"/> - <connections> - <action selector="printTapped:" destination="-1" eventType="touchUpInside" id="yRu-RH-LWQ"/> - </connections> - </button> - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="cU4-SH-dvs"> - <rect key="frame" x="121.00000000000001" y="0.0" width="47.666666666666671" height="48"/> - <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> - <state key="normal" image="gmail"/> - <connections> - <action selector="gmailTapped:" destination="-1" eventType="touchUpInside" id="poW-WI-acw"/> - </connections> - </button> - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Whx-iK-x70"> - <rect key="frame" x="181.33333333333334" y="0.0" width="48" height="48"/> - <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> - <state key="normal" image="telegram"/> - <connections> - <action selector="telegramTapped:" destination="-1" eventType="touchUpInside" id="YoB-5c-aP4"/> - </connections> - </button> - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="tF8-Lh-ilb"> - <rect key="frame" x="242" y="0.0" width="48" height="48"/> - <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> - <state key="normal" image="whatsapp"/> - <connections> - <action selector="whatsappShare:" destination="-1" eventType="touchUpInside" id="DwL-37-TTO"/> - </connections> - </button> + <stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" translatesAutoresizingMaskIntoConstraints="NO" id="718-GQ-BuB"> + <rect key="frame" x="0.0" y="0.0" width="430" height="100"/> + <subviews> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="bgA-NI-AzQ"> + <rect key="frame" x="0.0" y="0.0" width="143.33333333333334" height="100"/> + <subviews> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="jE5-UT-fB1"> + <rect key="frame" x="29.333333333333329" y="22.666666666666629" width="85" height="55"/> + <color key="backgroundColor" red="0.1215686275" green="0.52549019610000003" blue="1" alpha="1" colorSpace="calibratedRGB"/> + <constraints> + <constraint firstAttribute="height" constant="55" id="JX1-6T-Gsm"/> + <constraint firstAttribute="width" constant="85" id="mrv-yd-NpT"/> + </constraints> + <fontDescription key="fontDescription" name="Poppins-Regular" family="Poppins" pointSize="16"/> + <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> + <state key="normal" title="Button"/> + <connections> + <action selector="continueTapped:" destination="-1" eventType="touchUpInside" id="64G-bX-vXa"/> + </connections> + </button> + </subviews> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <constraints> + <constraint firstItem="jE5-UT-fB1" firstAttribute="centerX" secondItem="bgA-NI-AzQ" secondAttribute="centerX" id="Ktj-fc-wZp"/> + <constraint firstItem="jE5-UT-fB1" firstAttribute="centerY" secondItem="bgA-NI-AzQ" secondAttribute="centerY" id="xmu-5b-7Fs"/> + </constraints> + </view> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="BJX-OA-bae"> + <rect key="frame" x="143.33333333333331" y="0.0" width="143.33333333333331" height="100"/> + <subviews> + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="OCR" translatesAutoresizingMaskIntoConstraints="NO" id="mvC-Zj-Plh"> + <rect key="frame" x="54.333333333333314" y="12" width="35" height="35"/> + <constraints> + <constraint firstAttribute="height" constant="35" id="9lk-jm-95U"/> + <constraint firstAttribute="width" constant="35" id="KkF-U0-Sps"/> + </constraints> + </imageView> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Export text" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7JD-iL-DeH"> + <rect key="frame" x="0.0" y="52" width="143.33333333333334" height="20.333333333333329"/> + <fontDescription key="fontDescription" type="system" pointSize="17"/> + <nil key="textColor"/> + <nil key="highlightedColor"/> + </label> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="iVs-aT-KbC"> + <rect key="frame" x="0.0" y="0.0" width="143.33333333333334" height="100"/> + <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> + </button> + </subviews> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <constraints> + <constraint firstItem="7JD-iL-DeH" firstAttribute="top" secondItem="mvC-Zj-Plh" secondAttribute="bottom" constant="5" id="3pu-26-iQe"/> + <constraint firstAttribute="trailing" secondItem="iVs-aT-KbC" secondAttribute="trailing" id="HEa-QP-lsb"/> + <constraint firstItem="mvC-Zj-Plh" firstAttribute="centerX" secondItem="BJX-OA-bae" secondAttribute="centerX" id="PeL-ho-kjB"/> + <constraint firstAttribute="bottom" secondItem="iVs-aT-KbC" secondAttribute="bottom" id="QRm-oq-qgU"/> + <constraint firstAttribute="trailing" secondItem="7JD-iL-DeH" secondAttribute="trailing" id="hTp-cx-FOx"/> + <constraint firstItem="iVs-aT-KbC" firstAttribute="top" secondItem="BJX-OA-bae" secondAttribute="top" id="lkM-gM-SNa"/> + <constraint firstItem="mvC-Zj-Plh" firstAttribute="top" secondItem="BJX-OA-bae" secondAttribute="top" constant="12" id="niG-kB-FmP"/> + <constraint firstItem="iVs-aT-KbC" firstAttribute="leading" secondItem="BJX-OA-bae" secondAttribute="leading" id="sXJ-vp-un3"/> + <constraint firstItem="7JD-iL-DeH" firstAttribute="leading" secondItem="BJX-OA-bae" secondAttribute="leading" id="x4o-Dy-nrq"/> + </constraints> + </view> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="BAt-0v-QCp"> + <rect key="frame" x="286.66666666666669" y="0.0" width="143.33333333333331" height="100"/> + <subviews> + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="edit_black" translatesAutoresizingMaskIntoConstraints="NO" id="ooZ-SP-MTR"> + <rect key="frame" x="54.333333333333314" y="12" width="35" height="35"/> + <color key="tintColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> + <constraints> + <constraint firstAttribute="width" constant="35" id="Kx2-wR-oZT"/> + <constraint firstAttribute="height" constant="35" id="O8q-pH-0fM"/> + </constraints> + </imageView> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="edit" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qsI-va-wrT"> + <rect key="frame" x="0.0" y="52" width="143.33333333333334" height="24"/> + <fontDescription key="fontDescription" name="Poppins-Regular" family="Poppins" pointSize="17"/> + <nil key="textColor"/> + <nil key="highlightedColor"/> + </label> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="tYF-EJ-SgN"> + <rect key="frame" x="0.0" y="0.0" width="143.33333333333334" height="100"/> + <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> + </button> + </subviews> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <constraints> + <constraint firstItem="ooZ-SP-MTR" firstAttribute="centerX" secondItem="BAt-0v-QCp" secondAttribute="centerX" id="9Np-VW-26j"/> + <constraint firstItem="qsI-va-wrT" firstAttribute="leading" secondItem="BAt-0v-QCp" secondAttribute="leading" id="GEA-MI-Lk8"/> + <constraint firstItem="qsI-va-wrT" firstAttribute="top" secondItem="ooZ-SP-MTR" secondAttribute="bottom" constant="5" id="JLt-So-RNb"/> + <constraint firstItem="tYF-EJ-SgN" firstAttribute="leading" secondItem="BAt-0v-QCp" secondAttribute="leading" id="fBk-tc-jGp"/> + <constraint firstItem="tYF-EJ-SgN" firstAttribute="top" secondItem="BAt-0v-QCp" secondAttribute="top" id="g6i-ZB-ZjG"/> + <constraint firstItem="ooZ-SP-MTR" firstAttribute="top" secondItem="BAt-0v-QCp" secondAttribute="top" constant="12" id="gL0-We-dt6"/> + <constraint firstAttribute="trailing" secondItem="tYF-EJ-SgN" secondAttribute="trailing" id="lkR-Eh-qTZ"/> + <constraint firstAttribute="trailing" secondItem="qsI-va-wrT" secondAttribute="trailing" id="tdX-1d-fDk"/> + <constraint firstAttribute="bottom" secondItem="tYF-EJ-SgN" secondAttribute="bottom" id="vW8-Ql-yf4"/> + </constraints> + </view> + </subviews> + </stackView> </subviews> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> <constraints> - <constraint firstAttribute="height" constant="48" id="Z98-C8-xKI"/> - <constraint firstAttribute="width" constant="290" id="qa6-FY-tCL"/> - </constraints> - </stackView> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Z2A-Ww-p2a"> - <rect key="frame" x="0.0" y="748.66666666666663" width="393" height="1"/> - <color key="backgroundColor" red="0.3921568627" green="0.3921568627" blue="0.3921568627" alpha="1" colorSpace="calibratedRGB"/> - <constraints> - <constraint firstAttribute="height" constant="1" id="XM1-pT-dSi"/> + <constraint firstAttribute="height" constant="100" id="2RO-eY-ouu"/> + <constraint firstItem="718-GQ-BuB" firstAttribute="leading" secondItem="aGp-MO-3Od" secondAttribute="leading" id="FVP-zB-AQc"/> + <constraint firstAttribute="bottom" secondItem="718-GQ-BuB" secondAttribute="bottom" id="Hth-vB-9Sa"/> + <constraint firstAttribute="trailing" secondItem="718-GQ-BuB" secondAttribute="trailing" id="drk-Qr-WqI"/> + <constraint firstItem="718-GQ-BuB" firstAttribute="top" secondItem="aGp-MO-3Od" secondAttribute="top" id="og7-YD-73G"/> </constraints> </view> </subviews> <viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/> <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> <constraints> - <constraint firstItem="Z2A-Ww-p2a" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="1Me-Z1-4pz"/> <constraint firstItem="4ep-ST-cZS" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="5bx-89-IgC"/> <constraint firstItem="7Fw-PR-xtE" firstAttribute="centerX" secondItem="i5M-Pr-FkT" secondAttribute="centerX" id="63e-Me-RoR"/> + <constraint firstAttribute="bottom" secondItem="aGp-MO-3Od" secondAttribute="bottom" id="76R-Xh-XGe"/> <constraint firstItem="4ep-ST-cZS" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" constant="85" id="8Hd-pt-rYP"/> - <constraint firstItem="ZwN-3q-O93" firstAttribute="top" secondItem="Kl7-O6-xwc" secondAttribute="bottom" constant="15" id="DaI-bi-76l"/> - <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="s7Z-Yw-lu7" secondAttribute="trailing" id="JN5-8J-32W"/> - <constraint firstItem="Kl7-O6-xwc" firstAttribute="centerX" secondItem="i5M-Pr-FkT" secondAttribute="centerX" id="OxI-gy-D1m"/> - <constraint firstItem="Z2A-Ww-p2a" firstAttribute="top" secondItem="ZwN-3q-O93" secondAttribute="bottom" constant="13" id="Suz-rh-hug"/> - <constraint firstAttribute="trailing" secondItem="Z2A-Ww-p2a" secondAttribute="trailing" id="gfx-Mq-f4P"/> - <constraint firstItem="ZwN-3q-O93" firstAttribute="centerX" secondItem="fnl-2z-Ty3" secondAttribute="centerX" id="i57-eq-d1n"/> - <constraint firstItem="s7Z-Yw-lu7" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="ijP-xB-rji"/> + <constraint firstAttribute="trailing" secondItem="IBl-5l-IBa" secondAttribute="trailing" id="Ife-Oh-hD1"/> + <constraint firstItem="IBl-5l-IBa" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="Mha-Xh-r0h"/> + <constraint firstItem="aGp-MO-3Od" firstAttribute="top" secondItem="IBl-5l-IBa" secondAttribute="bottom" id="S8l-Sc-wRs"/> + <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="aGp-MO-3Od" secondAttribute="trailing" id="Smb-Oe-zAZ"/> + <constraint firstItem="aGp-MO-3Od" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="cEJ-dB-xg1"/> + <constraint firstItem="IBl-5l-IBa" firstAttribute="top" secondItem="7Fw-PR-xtE" secondAttribute="bottom" constant="30" id="k2J-bm-Jfv"/> <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="4ep-ST-cZS" secondAttribute="trailing" id="k5T-1f-iEU"/> <constraint firstItem="7Fw-PR-xtE" firstAttribute="top" secondItem="4ep-ST-cZS" secondAttribute="bottom" constant="25" id="qwO-vJ-TAZ"/> - <constraint firstItem="Kl7-O6-xwc" firstAttribute="top" secondItem="s7Z-Yw-lu7" secondAttribute="bottom" constant="12" id="vM8-xk-lNK"/> - <constraint firstItem="s7Z-Yw-lu7" firstAttribute="top" secondItem="7Fw-PR-xtE" secondAttribute="bottom" constant="37" id="w8y-bc-Noq"/> </constraints> - <point key="canvasLocation" x="138.1679389312977" y="20.422535211267608"/> + <point key="canvasLocation" x="138.13953488372093" y="19.95708154506438"/> </view> </objects> <resources> + <image name="OCR" width="36" height="35"/> <image name="controller" width="164" height="40"/> + <image name="edit_black" width="36" height="36"/> <image name="gmail" width="48" height="48"/> <image name="more" width="76" height="75"/> <image name="print" width="68" height="67"/> diff --git a/MiniScanner/Supporting Files/Assets.xcassets/OCR.imageset/Contents.json b/MiniScanner/Supporting Files/Assets.xcassets/OCR.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..2fb2deef11896872c492c45c5356906a26960d97 --- /dev/null +++ b/MiniScanner/Supporting Files/Assets.xcassets/OCR.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Icons (3).svg", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/MiniScanner/Supporting Files/Assets.xcassets/OCR.imageset/Icons (3).svg b/MiniScanner/Supporting Files/Assets.xcassets/OCR.imageset/Icons (3).svg new file mode 100644 index 0000000000000000000000000000000000000000..61d894387e78b002480698df272a5a9ba05b5980 --- /dev/null +++ b/MiniScanner/Supporting Files/Assets.xcassets/OCR.imageset/Icons (3).svg @@ -0,0 +1,24 @@ +<svg width="36" height="35" viewBox="0 0 36 35" fill="none" xmlns="http://www.w3.org/2000/svg"> +<g clip-path="url(#clip0_2019_531)"> +<g clip-path="url(#clip1_2019_531)"> +<mask id="mask0_2019_531" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="36" height="35"> +<path d="M35.5 0H0.5V35H35.5V0Z" fill="white"/> +</mask> +<g mask="url(#mask0_2019_531)"> +<path d="M29.6668 17.5H6.3335" stroke="#070707" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> +<path d="M23.8335 5.83301H26.7502C28.361 5.83301 29.6668 7.13884 29.6668 8.74967V11.6663" stroke="#070707" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> +<path d="M12.1668 29.1663H9.25016C7.63933 29.1663 6.3335 27.8604 6.3335 26.2497V23.333" stroke="#070707" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> +<path d="M29.6668 23.333V26.2497C29.6668 27.8604 28.361 29.1663 26.7502 29.1663H23.8335" stroke="#070707" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> +<path d="M6.3335 11.6663V8.74967C6.3335 7.13884 7.63933 5.83301 9.25016 5.83301H12.1668" stroke="#070707" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> +</g> +</g> +</g> +<defs> +<clipPath id="clip0_2019_531"> +<rect width="35" height="35" fill="white" transform="matrix(-1 0 0 1 35.5 0)"/> +</clipPath> +<clipPath id="clip1_2019_531"> +<rect width="35" height="35" fill="white" transform="translate(0.5)"/> +</clipPath> +</defs> +</svg> diff --git a/MiniScanner/Supporting Files/Assets.xcassets/edit_black.imageset/Contents.json b/MiniScanner/Supporting Files/Assets.xcassets/edit_black.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..ce55a654ebd19b120cae71001fa2fe277531e9ad --- /dev/null +++ b/MiniScanner/Supporting Files/Assets.xcassets/edit_black.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Icons (2).svg", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/MiniScanner/Supporting Files/Assets.xcassets/edit_black.imageset/Icons (2).svg b/MiniScanner/Supporting Files/Assets.xcassets/edit_black.imageset/Icons (2).svg new file mode 100644 index 0000000000000000000000000000000000000000..480cb5bb1521f2fe53b1a160a6267a66268b38e8 --- /dev/null +++ b/MiniScanner/Supporting Files/Assets.xcassets/edit_black.imageset/Icons (2).svg @@ -0,0 +1,10 @@ +<svg width="36" height="36" viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg"> +<g clip-path="url(#clip0_2019_195)"> +<path d="M28.3775 13.8985L22.5441 8.06519M28.3775 13.8985L21.088 21.1879C20.1274 22.1485 18.9615 22.9068 17.6229 23.1376C16.2713 23.3708 14.594 23.4484 13.7941 22.6485C12.9942 21.8486 13.0718 20.1712 13.3049 18.8197C13.5357 17.4811 14.2941 16.3151 15.2547 15.3545L22.5441 8.06519M28.3775 13.8985C28.3775 13.8985 32.7523 9.52352 29.8357 6.60685C26.919 3.69019 22.5441 8.06519 22.5441 8.06519M30.6459 18.0001C30.6459 27.4792 27.7292 30.3959 18.2501 30.3959C8.77091 30.3959 5.85425 27.4792 5.85425 18.0001C5.85425 8.52091 8.77091 5.60425 18.2501 5.60425" stroke="#070707" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> +</g> +<defs> +<clipPath id="clip0_2019_195"> +<rect width="35" height="35" fill="white" transform="matrix(-1 0 0 1 35.75 0.5)"/> +</clipPath> +</defs> +</svg> diff --git a/MiniScanner/Supporting Files/CustomWeScan/Scan/ScannerViewController.swift b/MiniScanner/Supporting Files/CustomWeScan/Scan/ScannerViewController.swift index 81691acabb8c7bffdcf9ae277b2b7dbc6e810942..7425a723119b45e57e4ba2fe50a5ccd44ec2cc3c 100644 --- a/MiniScanner/Supporting Files/CustomWeScan/Scan/ScannerViewController.swift +++ b/MiniScanner/Supporting Files/CustomWeScan/Scan/ScannerViewController.swift @@ -523,15 +523,9 @@ extension ScannerViewController: CustomTabBarViewDelegate { self.navigationController?.popViewController(animated: false) } func editButtonTapped() { -// let alert = UIAlertController(title: "Alert!", message: "In progress and soon will be ready!!", preferredStyle: .alert) -// -// let okAction = UIAlertAction(title: "OK", style: .default) { (action) in -// self.dismiss(animated: true) -// } -// alert.addAction(okAction) -// self.present(alert, animated: true, completion: nil) print(multipageSession.scannedItems.count) let editViewController = EditViewController(scanSession: self.multipageSession) + editViewController.selectedFolder = self.selectedFolder self.navigationController?.pushViewController(editViewController, animated: true) } diff --git a/Pods/FSPagerView/Sources/FSPagerViewCell.swift b/Pods/FSPagerView/Sources/FSPagerViewCell.swift index 98855245ec5e1fa46cb9c6bf33b005cafc4a3eab..7128c938528f19d434bd629565e468b7f4d2db77 100644 --- a/Pods/FSPagerView/Sources/FSPagerViewCell.swift +++ b/Pods/FSPagerView/Sources/FSPagerViewCell.swift @@ -54,9 +54,9 @@ open class FSPagerViewCell: UICollectionViewCell { self.contentView.addSubview(topLeftButton) // Add the button to the cell's contentView topLeftButton.setImage(UIImage(systemName: "trash.fill"), for: .normal) topLeftButton.addTarget(self, action: #selector(topLeftButtonTapped), for: .touchUpInside) // Set the button action - topLeftButton.tintColor = .white + topLeftButton.tintColor = .red topLeftButton.layer.cornerRadius = 25 - topLeftButton.layer.borderColor = UIColor.white.cgColor + topLeftButton.layer.borderColor = UIColor.red.cgColor topLeftButton.layer.borderWidth = 2 return imageView