Browse Source

new view share

marinofaggiana 5 years ago
parent
commit
0545904f05

+ 1 - 0
Cartfile

@@ -14,6 +14,7 @@ github "malcommac/SwiftRichString" == 3.0.0
 github "yannickl/QRCodeReader.swift" >= 10.1.0
 github "weichsel/ZIPFoundation" == 0.9.9
 github "rechsteiner/Parchment" == 1.6.0
+github "WenchaoD/FSCalendar"
 
 github "https://github.com/marinofaggiana/FastScroll" "master"
 github "https://github.com/marinofaggiana/AFNetworking" "master"

+ 1 - 0
Cartfile.resolved

@@ -3,6 +3,7 @@ github "CocoaLumberjack/CocoaLumberjack" "3.5.3"
 github "MortimerGoro/MGSwipeTableCell" "1.6.8"
 github "SVGKit/SVGKit" "2.1.0"
 github "WeTransfer/WeScan" "v1.1.0"
+github "WenchaoD/FSCalendar" "2.8.0"
 github "calimarkus/JDStatusBarNotification" "1.6.0"
 github "danielsaidi/Sheeeeeeeeet" "1.2.2"
 github "dzenbot/DZNEmptyDataSet" "v1.8.1"

+ 5 - 0
Nextcloud.xcodeproj/project.pbxproj

@@ -217,6 +217,7 @@
 		F747BA1F22354D2000971601 /* NCCreateFormUploadVoiceNote.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F747BA1E22354D2000971601 /* NCCreateFormUploadVoiceNote.storyboard */; };
 		F7499A1C2247AD3A00A7D630 /* IMImagemeterView.xib in Resources */ = {isa = PBXBuildFile; fileRef = F7499A1B2247AD3A00A7D630 /* IMImagemeterView.xib */; };
 		F749E4E91DC1FB38009BA2FD /* Share.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = F7CE8AFB1DC1F8D8009CAE48 /* Share.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
+		F74AFCE922E8B025003DE61F /* FSCalendar.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F74AFCE822E8B024003DE61F /* FSCalendar.framework */; };
 		F74E432620B5547700C2E54C /* NCNetworkingEndToEnd.m in Sources */ = {isa = PBXBuildFile; fileRef = F74E432520B5547700C2E54C /* NCNetworkingEndToEnd.m */; };
 		F74E432720B5547700C2E54C /* NCNetworkingEndToEnd.m in Sources */ = {isa = PBXBuildFile; fileRef = F74E432520B5547700C2E54C /* NCNetworkingEndToEnd.m */; };
 		F7501C322212E57500FB1415 /* NCMedia.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F7501C302212E57400FB1415 /* NCMedia.storyboard */; };
@@ -861,6 +862,7 @@
 		F7496B81208F5651004B299C /* iOSClient.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = iOSClient.plist; sourceTree = "<group>"; };
 		F7496B83208F5652004B299C /* Share.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Share.plist; sourceTree = "<group>"; };
 		F7499A1B2247AD3A00A7D630 /* IMImagemeterView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = IMImagemeterView.xib; sourceTree = "<group>"; };
+		F74AFCE822E8B024003DE61F /* FSCalendar.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FSCalendar.framework; path = Carthage/Build/iOS/FSCalendar.framework; sourceTree = "<group>"; };
 		F74D3DBD1BAC1941000BAE4B /* OCNetworking.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCNetworking.h; sourceTree = "<group>"; };
 		F74D3DBE1BAC1941000BAE4B /* OCNetworking.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCNetworking.m; sourceTree = "<group>"; };
 		F74E432420B5547700C2E54C /* NCNetworkingEndToEnd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NCNetworkingEndToEnd.h; sourceTree = "<group>"; };
@@ -1528,6 +1530,7 @@
 				F75153242226920200323DDC /* FastScroll.framework in Frameworks */,
 				F7C40C122199BA620004137E /* RealmSwift.framework in Frameworks */,
 				F78AA20621F783E900D0F205 /* SwiftRichString.framework in Frameworks */,
+				F74AFCE922E8B025003DE61F /* FSCalendar.framework in Frameworks */,
 				F7D4B6982295666E000C2C86 /* FirebaseMLVision.framework in Frameworks */,
 				F7D4B6862295663D000C2C86 /* FirebaseCore.framework in Frameworks */,
 				F7D4B68A2295663D000C2C86 /* FIRAnalyticsConnector.framework in Frameworks */,
@@ -2977,6 +2980,7 @@
 		F7FC7D541DC1F93700BB2C6A /* Frameworks */ = {
 			isa = PBXGroup;
 			children = (
+				F74AFCE822E8B024003DE61F /* FSCalendar.framework */,
 				F700510222DF6897003A3356 /* Parchment.framework */,
 				F7421EAE2294044B00C4B7C1 /* Accelerate.framework */,
 				F70F2BA4225F2D8900EBB73E /* ZIPFoundation.framework */,
@@ -3425,6 +3429,7 @@
 				"$(SRCROOT)/Carthage/Build/iOS/AFNetworking.framework",
 				"$(SRCROOT)/Carthage/Build/iOS/ZIPFoundation.framework",
 				"$(SRCROOT)/Carthage/Build/iOS/Parchment.framework",
+				"$(SRCROOT)/Carthage/Build/iOS/FSCalendar.framework",
 			);
 			outputPaths = (
 			);

+ 9 - 0
iOSClient/Settings/Acknowledgements.rtf

@@ -307,4 +307,13 @@ The MIT License (MIT)\
 \
 Copyright (c) Martin Rechsteiner\
 ____________________________________________\
+\
+
+\f1\b FSCalendar
+\f0\b0 \
+\
+The MIT License (MIT)\
+\
+Copyright (c) Wenchao Ding\
+____________________________________________\
 }

+ 54 - 9
iOSClient/Share/NCShare.swift

@@ -23,6 +23,7 @@
 
 import Foundation
 import Parchment
+import FSCalendar
 
 class NCSharePaging: UIViewController {
     
@@ -297,7 +298,7 @@ class NCShare: UIViewController, UIGestureRecognizerDelegate, NCShareLinkCellDel
     }
     
     func tapMenu(with tableShare: tableShare?, sender: Any) {
-        NCShareCommon.sharedInstance.openViewMenuShareLink(view: self.view, height: height, tableShare: tableShare, metadata: metadata!)
+        NCShareCommon.sharedInstance.openViewMenuShareLink(view: self.view, tableShare: tableShare, metadata: metadata!)
     }
     
     @objc func reloadData() {
@@ -405,7 +406,7 @@ protocol NCShareLinkCellDelegate {
 
 // MARK: - ShareLinkMenuView
 
-class NCShareLinkMenuView: UIView, UIGestureRecognizerDelegate, NCShareNetworkingDelegate {
+class NCShareLinkMenuView: UIView, UIGestureRecognizerDelegate, NCShareNetworkingDelegate, FSCalendarDelegate {
     
     @IBOutlet weak var switchAllowEditing: UISwitch!
     @IBOutlet weak var labelAllowEditing: UILabel!
@@ -442,6 +443,7 @@ class NCShareLinkMenuView: UIView, UIGestureRecognizerDelegate, NCShareNetworkin
     private var tableShare: tableShare?
     public var metadata: tableMetadata?
     public var viewWindow: UIView?
+    private var viewWindowCalendar: UIView?
     
     override func awakeFromNib() {
         
@@ -454,7 +456,6 @@ class NCShareLinkMenuView: UIView, UIGestureRecognizerDelegate, NCShareNetworkin
         layer.masksToBounds = false
         layer.shadowOffset = CGSize(width: 2, height: 2)
         layer.shadowOpacity = 0.2
-        layer.cornerRadius = 5
         
         switchAllowEditing.transform = CGAffineTransform(scaleX: 0.75, y: 0.75)
         switchHideDownload.transform = CGAffineTransform(scaleX: 0.75, y: 0.75)
@@ -465,6 +466,8 @@ class NCShareLinkMenuView: UIView, UIGestureRecognizerDelegate, NCShareNetworkin
         textViewNoteToRecipient.layer.borderWidth = 0.5
         textViewNoteToRecipient.layer.masksToBounds = false
         textViewNoteToRecipient.layer.cornerRadius = 5
+        
+        fieldSetExpirationDate.inputView = UIView()
 
         imageNoteToRecipient.image = CCGraphics.changeThemingColorImage(UIImage.init(named: "file_txt"), width: 100, height: 100, color: UIColor.black)
         imageDeleteShareLink.image = CCGraphics.changeThemingColorImage(UIImage.init(named: "trash"), width: 100, height: 100, color: UIColor.black)
@@ -521,6 +524,7 @@ class NCShareLinkMenuView: UIView, UIGestureRecognizerDelegate, NCShareNetworkin
         if tableShare != nil && tableShare!.expirationDate != nil {
             switchSetExpirationDate.setOn(true, animated: false)
             switchSetExpirationDate.isEnabled = true
+            
             let dateFormatter = DateFormatter()
             dateFormatter.formatterBehavior = .behavior10_4
             dateFormatter.dateStyle = .short
@@ -585,6 +589,13 @@ class NCShareLinkMenuView: UIView, UIGestureRecognizerDelegate, NCShareNetworkin
         networking.updateShare(idRemoteShared: tableShare.idRemoteShared, password: fieldPasswordProtect.text, permission: 0, note: nil, expirationTime: nil, hideDownload: tableShare.hideDownload)
     }
     
+    @IBAction func fieldSetExpirationDate(sender: UITextField) {
+        
+        let calendar = NCShareCommon.sharedInstance.openCalendar(view: self, width: width, height: height)
+        calendar.calendar.delegate = self
+        viewWindowCalendar = calendar.viewWindow
+    }
+    
     @IBAction func buttonSendNoteToRecipient(sender: UIButton) {
         
         guard let tableShare = self.tableShare else { return }
@@ -628,6 +639,18 @@ class NCShareLinkMenuView: UIView, UIGestureRecognizerDelegate, NCShareNetworkin
     func updateShareWithError(idRemoteShared: Int) {
         reloadData(idRemoteShared: idRemoteShared)
     }
+    
+    // delegate calendar
+    func calendar(_ calendar: FSCalendar, didSelect date: Date, at monthPosition: FSCalendarMonthPosition) {
+        
+        let dateFormatter = DateFormatter()
+        dateFormatter.formatterBehavior = .behavior10_4
+        dateFormatter.dateStyle = .short
+        fieldSetExpirationDate.text = dateFormatter.string(from:date)
+        fieldSetExpirationDate.endEditing(true)
+        
+        viewWindowCalendar?.removeFromSuperview()
+    }
 }
 
 // --------------------------------------------------------------------------------------------
@@ -655,7 +678,7 @@ class NCShareCommon: NSObject {
         return image
     }
     
-    func openViewMenuShareLink(view: UIView, height: CGFloat, tableShare: tableShare?, metadata: tableMetadata) {
+    func openViewMenuShareLink(view: UIView, tableShare: tableShare?, metadata: tableMetadata) {
         
         let globalPoint = view.superview?.convert(view.frame.origin, to: nil)
         
@@ -667,15 +690,37 @@ class NCShareCommon: NSObject {
         shareLinkMenuView?.addTap(view: viewWindow)
         shareLinkMenuView?.metadata = metadata
         shareLinkMenuView?.reloadData(idRemoteShared: tableShare?.idRemoteShared ?? 0)
-        let shareLinkMenuViewX = view.bounds.width - (shareLinkMenuView?.frame.width)! - 40 + globalPoint!.x
-        var shareLinkMenuViewY = height + 10 + globalPoint!.y
-        if (view.bounds.height - (height + 10))  < shareLinkMenuView!.height {
-            shareLinkMenuViewY = shareLinkMenuViewY - height
-        }
+        let shareLinkMenuViewX = view.bounds.width/2 - (shareLinkMenuView?.frame.width)!/2 + globalPoint!.x
+        let shareLinkMenuViewY = globalPoint!.y + 10
+       
         shareLinkMenuView?.frame = CGRect(x: shareLinkMenuViewX, y: shareLinkMenuViewY, width: shareLinkMenuView!.width, height: shareLinkMenuView!.height)
         viewWindow.addSubview(shareLinkMenuView!)
     }
     
+    func openCalendar(view: UIView, width: CGFloat, height: CGFloat) -> (calendar: FSCalendar, viewWindow: UIView) {
+        
+        let globalPoint = view.superview?.convert(view.frame.origin, to: nil)
+
+        let window = UIApplication.shared.keyWindow!
+        let viewWindow = UIView(frame: window.bounds)
+        window.addSubview(viewWindow)
+        
+        let calendar = FSCalendar(frame: CGRect(x: globalPoint!.x + 10, y: globalPoint!.y + 100, width: width - 20, height: 300))
+       
+        calendar.backgroundColor = .white
+        calendar.layer.borderColor = UIColor.lightGray.cgColor
+        calendar.layer.borderWidth = 0.5
+        calendar.layer.masksToBounds = false
+        calendar.layer.cornerRadius = 5
+        calendar.layer.masksToBounds = false
+        calendar.layer.shadowOffset = CGSize(width: 2, height: 2)
+        calendar.layer.shadowOpacity = 0.2
+        
+        viewWindow.addSubview(calendar)
+        
+        return(calendar: calendar, viewWindow: viewWindow)
+    }
+    
     func copyLink(tableShare: tableShare?, viewController: UIViewController) {
         
         let appDelegate = UIApplication.shared.delegate as! AppDelegate

+ 4 - 1
iOSClient/Share/NCShareLinkMenuView.xib

@@ -99,7 +99,10 @@
                     </constraints>
                     <nil key="textColor"/>
                     <fontDescription key="fontDescription" type="system" pointSize="13"/>
-                    <textInputTraits key="textInputTraits" textContentType="password"/>
+                    <textInputTraits key="textInputTraits"/>
+                    <connections>
+                        <action selector="fieldSetExpirationDateWithSender:" destination="iN0-l3-epB" eventType="editingDidBegin" id="5Ou-k5-UM5"/>
+                    </connections>
                 </textField>
                 <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="file_txt" translatesAutoresizingMaskIntoConstraints="NO" id="F4T-wQ-tBU">
                     <rect key="frame" x="13" y="278" width="25" height="25"/>