Skip to content

Commit ede28c7

Browse files
NMC 1988 - Scan customisation changes
1 parent f82dc91 commit ede28c7

5 files changed

Lines changed: 200 additions & 85 deletions

File tree

iOSClient/Scan document/NCCreateFormUploadScanDocument.swift

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,10 @@ class NCCreateFormUploadScanDocument: XLFormViewController, NCSelectDelegate, NC
7171

7272
self.init()
7373

74+
if serverUrl == utilityFileSystem.getHomeServer(urlBase: appDelegate?.urlBase ?? "", userId: appDelegate?.userId ?? "") {
75+
titleServerUrl = "/"
76+
} else {
77+
titleServerUrl = (serverUrl as NSString).lastPathComponent
7478
if serverUrl == utilityFileSystem.getHomeServer(session: session) {
7579
titleServerUrl = "/"
7680
} else {
@@ -508,12 +512,18 @@ class NCCreateFormUploadScanDocument: XLFormViewController, NCSelectDelegate, NC
508512

509513
// MARK: - Action
510514

515+
func dismissSelect(serverUrl: String?, metadata: tableMetadata?, type: String, items: [Any], indexPath: [IndexPath], overwrite: Bool, copy: Bool, move: Bool) {
516+
517+
func dismissSelect(serverUrl: String?, metadata: tableMetadata?, type: String, items: [Any], overwrite: Bool, copy: Bool, move: Bool) {
518+
519+
511520
func dismissSelect(serverUrl: String?, metadata: tableMetadata?, type: String, items: [Any], overwrite: Bool, copy: Bool, move: Bool) {
512521

513522
if serverUrl != nil {
514523

515524
self.serverUrl = serverUrl!
516525

526+
if serverUrl == utilityFileSystem.getHomeServer(urlBase: appDelegate?.urlBase ?? "", userId: appDelegate?.userId ?? "") {
517527
if serverUrl == utilityFileSystem.getHomeServer(session: session) {
518528
self.titleServerUrl = "/"
519529
} else {
@@ -746,11 +756,18 @@ class NCCreateFormUploadScanDocument: XLFormViewController, NCSelectDelegate, NC
746756
}
747757
}
748758

759+
760+
let metadataForUpload = NCManageDatabase.shared.createMetadata(account: appDelegate?.account ?? "", user: appDelegate?.user ?? "", userId: appDelegate?.userId ?? "", fileName: fileNameSave, fileNameView: fileNameSave, ocId: UUID().uuidString, serverUrl: serverUrl, urlBase: appDelegate?.urlBase ?? "", url: "", contentType: "")
761+
762+
// let metadataForUpload = NCManageDatabase.shared.createMetadata(account: appDelegate?.account ?? "", user: appDelegate?.user ?? "", userId: appDelegate?.userId ?? "", fileName: fileNameSave, fileNameView: fileNameSave, ocId: UUID().uuidString, serverUrl: serverUrl, urlBase: appDelegate?.urlBase ?? "", url: "", contentType: "")
749763
let metadataForUpload = NCManageDatabase.shared.createMetadata(fileName: fileNameSave, fileNameView: fileNameSave, ocId: UUID().uuidString, serverUrl: serverUrl, url: "", contentType: "", session: session, sceneIdentifier: self.appDelegate?.sceneIdentifier)
750764

751765
metadataForUpload.session = NCNetworking.shared.sessionUploadBackground
752766
metadataForUpload.sessionSelector = NCGlobal.shared.selectorUploadFile
753767
metadataForUpload.status = NCGlobal.shared.metadataStatusWaitUpload
768+
769+
if NCManageDatabase.shared.getMetadataConflict(account: appDelegate?.account ?? "", serverUrl: serverUrl, fileNameView: fileNameSave) != nil {
770+
754771

755772
if NCManageDatabase.shared.getMetadataConflict(account: session.account, serverUrl: serverUrl, fileNameView: fileNameSave, nativeFormat: false) != nil {
756773

@@ -882,11 +899,17 @@ class NCCreateFormUploadScanDocument: XLFormViewController, NCSelectDelegate, NC
882899

883900
let image = changeCompressionImage(arrayImages[count])
884901

902+
let metadataForUpload = NCManageDatabase.shared.createMetadata(account: appDelegate?.account ?? "", user: appDelegate?.user ?? "", userId: appDelegate?.userId ?? "", fileName: fileNameSave, fileNameView: fileNameSave, ocId: UUID().uuidString, serverUrl: serverUrl, urlBase: appDelegate?.urlBase ?? "", url: "", contentType: "")
903+
904+
// let metadataForUpload = NCManageDatabase.shared.createMetadata(account: appDelegate?.account ?? "", user: appDelegate?.user ?? "", userId: appDelegate?.userId ?? "", fileName: fileNameSave, fileNameView: fileNameSave, ocId: UUID().uuidString, serverUrl: serverUrl, urlBase: appDelegate?.urlBase ?? "", url: "", contentType: "")
885905
let metadataForUpload = NCManageDatabase.shared.createMetadata(fileName: fileNameSave, fileNameView: fileNameSave, ocId: UUID().uuidString, serverUrl: serverUrl, url: "", contentType: "", session: session, sceneIdentifier: self.appDelegate?.sceneIdentifier)
886906

887907
metadataForUpload.session = NCNetworking.shared.sessionUploadBackground
888908
metadataForUpload.sessionSelector = NCGlobal.shared.selectorUploadFile
889909
metadataForUpload.status = NCGlobal.shared.metadataStatusWaitUpload
910+
911+
if NCManageDatabase.shared.getMetadataConflict(account: appDelegate?.account ?? "", serverUrl: serverUrl, fileNameView: fileNameSave) != nil {
912+
890913

891914
if NCManageDatabase.shared.getMetadataConflict(account: session.account, serverUrl: serverUrl, fileNameView: fileNameSave, nativeFormat: false) != nil {
892915

iOSClient/Scan document/NCScan.swift

Lines changed: 30 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import EasyTipView
2727
import SwiftUI
2828

2929
class NCScan: UIViewController, NCScanCellCellDelegate {
30+
3031
@IBOutlet weak var collectionViewSource: UICollectionView!
3132
@IBOutlet weak var collectionViewDestination: UICollectionView!
3233
@IBOutlet weak var cancel: UIBarButtonItem!
@@ -51,10 +52,6 @@ class NCScan: UIViewController, NCScanCellCellDelegate {
5152
internal let utility = NCUtility()
5253
internal let database = NCManageDatabase.shared
5354
internal var filter: NCGlobal.TypeFilterScanDocument = NCPreferences().typeFilterScanDocument
54-
55-
private var editMenuInteraction: UIEditMenuInteraction?
56-
private var traitRegistration: UITraitChangeRegistration?
57-
5855
@MainActor
5956
internal var session: NCSession.Session {
6057
NCSession.shared.getSession(controller: controller)
@@ -70,14 +67,6 @@ class NCScan: UIViewController, NCScanCellCellDelegate {
7067
view.backgroundColor = .secondarySystemGroupedBackground
7168
navigationItem.title = NSLocalizedString("_scanned_images_", comment: "")
7269

73-
let interaction = UIEditMenuInteraction(delegate: self)
74-
view.addInteraction(interaction)
75-
self.editMenuInteraction = interaction
76-
77-
traitRegistration = registerForTraitChanges([UITraitUserInterfaceStyle.self]) { (self: Self, _) in
78-
self.updateIcons()
79-
}
80-
8170
collectionViewSource.dragInteractionEnabled = true
8271
collectionViewSource.dragDelegate = self
8372
collectionViewSource.dropDelegate = self
@@ -122,6 +111,10 @@ class NCScan: UIViewController, NCScanCellCellDelegate {
122111

123112
override func viewDidAppear(_ animated: Bool) {
124113
super.viewDidAppear(animated)
114+
115+
// Re-evaluate in-app messages after viewDidAppear
116+
MoEngageAnalytics.shared.displayInAppNotificationSafely(reason: "viewDidAppear")
117+
125118
showTip()
126119
}
127120

@@ -137,7 +130,9 @@ class NCScan: UIViewController, NCScanCellCellDelegate {
137130

138131
// MARK: -
139132

140-
private func updateIcons() {
133+
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
134+
super.traitCollectionDidChange(previousTraitCollection)
135+
141136
add.setImage(utility.loadImage(named: "plus", colors: [NCBrandColor.shared.iconImageColor]), for: .normal)
142137
transferDown.setImage(utility.loadImage(named: "arrow.down", colors: [NCBrandColor.shared.iconImageColor]), for: .normal)
143138
}
@@ -294,31 +289,33 @@ class NCScan: UIViewController, NCScanCellCellDelegate {
294289
}
295290

296291
@objc func handleLongPressGesture(recognizer: UIGestureRecognizer) {
297-
guard recognizer.state == .began else { return }
298-
becomeFirstResponder()
299-
300-
guard let recognizerView = recognizer.view,
301-
UIPasteboard.general.hasImages else {
302-
// if recognizer.state == UIGestureRecognizer.State.began {
303-
// self.becomeFirstResponder()
304-
// let pasteboard = UIPasteboard.general
305-
// if let recognizerView = recognizer.view, let recognizerSuperView = recognizerView.superview, pasteboard.hasImages {
306-
// UIMenuController.shared.menuItems = [UIMenuItem(title: "Paste", action: #selector(pasteImage))]
307-
// UIMenuController.shared.showMenu(from: recognizerSuperView, rect: recognizerView.frame)
308-
// }
292+
if recognizer.state == UIGestureRecognizer.State.began {
293+
self.becomeFirstResponder()
294+
let pasteboard = UIPasteboard.general
295+
if let recognizerView = recognizer.view, let recognizerSuperView = recognizerView.superview, pasteboard.hasImages {
296+
UIMenuController.shared.menuItems = [UIMenuItem(title: "Paste", action: #selector(pasteImage(_:)))]
297+
UIMenuController.shared.showMenu(from: recognizerSuperView, rect: recognizerView.frame)
298+
}
309299
// TIP
310300
dismissTip()
311-
return
312301
}
302+
}
313303

314-
let sourcePoint = recognizer.location(in: recognizerView)
315-
let configuration = UIEditMenuConfiguration(
316-
identifier: nil,
317-
sourcePoint: sourcePoint
318-
)
304+
@objc func pasteImage(_ sender: Any?) {
305+
let pasteboard = UIPasteboard.general
306+
if pasteboard.hasImages {
307+
guard let image = pasteboard.image?.fixedOrientation() else { return }
308+
let fileName = utilityFileSystem.createFileName("scan.png", fileDate: Date(), fileType: PHAssetMediaType.image, notUseMask: true)
309+
let fileNamePath = utilityFileSystem.createServerUrl(serverUrl: utilityFileSystem.directoryScan, fileName: fileName)
310+
311+
do {
312+
try image.pngData()?.write(to: NSURL.fileURL(withPath: fileNamePath), options: .atomic)
313+
} catch {
314+
return
315+
}
319316

320-
editMenuInteraction?.presentEditMenu(with: configuration)
321-
dismissTip()
317+
loadImage()
318+
}
322319
}
323320

324321
func delete(with imageIndex: Int, sender: Any) {
@@ -399,54 +396,3 @@ extension NCScan: NCViewerQuickLookDelegate {
399396
collectionViewDestination.reloadData()
400397
}
401398
}
402-
403-
extension NCScan: UIEditMenuInteractionDelegate {
404-
func editMenuInteraction(
405-
_ interaction: UIEditMenuInteraction,
406-
menuFor configuration: UIEditMenuConfiguration,
407-
suggestedActions: [UIMenuElement]
408-
) -> UIMenu? {
409-
guard UIPasteboard.general.hasImages else { return nil }
410-
411-
let pasteAction = UIAction(
412-
title: NSLocalizedString("_paste_file_", comment: ""),
413-
image: UIImage(systemName: "doc.on.clipboard")
414-
) { [weak self] _ in
415-
self?.pasteImage()
416-
}
417-
418-
return UIMenu(children: [pasteAction])
419-
}
420-
421-
func pasteImage() {
422-
let pasteboard = UIPasteboard.general
423-
424-
guard pasteboard.hasImages,
425-
let image = pasteboard.image?.fixedOrientation(),
426-
let data = image.pngData() else {
427-
return
428-
}
429-
430-
let fileName = utilityFileSystem.createFileName(
431-
"scan.png",
432-
fileDate: Date(),
433-
fileType: .image,
434-
notUseMask: true
435-
)
436-
437-
let fileNamePath = utilityFileSystem.createServerUrl(
438-
serverUrl: utilityFileSystem.directoryScan,
439-
fileName: fileName
440-
)
441-
442-
do {
443-
try data.write(
444-
to: URL(fileURLWithPath: fileNamePath),
445-
options: .atomic
446-
)
447-
loadImage()
448-
} catch {
449-
return
450-
}
451-
}
452-
}

iOSClient/Scan document/NCUploadScanDocument.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,7 @@ class NCUploadScanDocument: ObservableObject {
286286
// MARK: - Delegate
287287

288288
extension NCUploadScanDocument: NCSelectDelegate {
289-
func dismissSelect(serverUrl: String?, metadata: tableMetadata?, type: String, items: [Any], overwrite: Bool, copy: Bool, move: Bool, session: NCSession.Session, controller: NCMainTabBarController?) {
289+
func dismissSelect(serverUrl: String?, metadata: tableMetadata?, type: String, items: [Any], overwrite: Bool, copy: Bool, move: Bool, session: NCSession.Session) {
290290
if let serverUrl = serverUrl {
291291
self.serverUrl = serverUrl
292292
}
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
//
2+
// PasswordInputField.swift
3+
// Nextcloud
4+
//
5+
// Created by Sumit on 10/06/21.
6+
// Copyright © 2021 Marino Faggiana. All rights reserved.
7+
//
8+
9+
import Foundation
10+
import XLForm
11+
12+
class PasswordInputField: XLFormBaseCell,UITextFieldDelegate {
13+
14+
@IBOutlet weak var fileNameInputTextField: UITextField!
15+
@IBOutlet weak var separatorBottom: UIView!
16+
17+
override func awakeFromNib() {
18+
super.awakeFromNib()
19+
// Initialization code
20+
fileNameInputTextField.isSecureTextEntry = true
21+
fileNameInputTextField.delegate = self
22+
separatorBottom.backgroundColor = NCBrandColor.shared.systemGray4
23+
self.selectionStyle = .none
24+
// fileNameInputTextField.inputAccessoryView = UIToolbar.doneToolbar {
25+
// self.fileNameInputTextField.resignFirstResponder()
26+
// }
27+
}
28+
29+
override func setSelected(_ selected: Bool, animated: Bool) {
30+
super.setSelected(selected, animated: animated)
31+
32+
// Configure the view for the selected state
33+
}
34+
35+
override func configure() {
36+
super.configure()
37+
// fileNameInputTextField.isEnabled = false
38+
39+
}
40+
41+
override func update() {
42+
super.update()
43+
}
44+
45+
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
46+
47+
if fileNameInputTextField == textField {
48+
if let rowDescriptor = rowDescriptor, let text = self.fileNameInputTextField.text {
49+
50+
if (text + " ").isEmpty == false {
51+
rowDescriptor.value = self.fileNameInputTextField.text! + string
52+
} else {
53+
rowDescriptor.value = nil
54+
}
55+
}
56+
}
57+
58+
self.formViewController().textField(textField, shouldChangeCharactersIn: range, replacementString: string)
59+
60+
return true
61+
}
62+
63+
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
64+
self.formViewController()?.textFieldShouldReturn(fileNameInputTextField)
65+
return true
66+
}
67+
68+
func textFieldShouldClear(_ textField: UITextField) -> Bool {
69+
self.formViewController()?.textFieldShouldClear(fileNameInputTextField)
70+
return true
71+
}
72+
73+
override class func formDescriptorCellHeight(for rowDescriptor: XLFormRowDescriptor!) -> CGFloat {
74+
return 45
75+
}
76+
}

0 commit comments

Comments
 (0)