ソースを参照

new NCViewerRichWorkspace

marinofaggiana 5 年 前
コミット
16bcb7f660

+ 4 - 0
Nextcloud.xcodeproj/project.pbxproj

@@ -466,6 +466,7 @@
 		F7CA1ED720E7E3FE002CC65E /* PKDownloadButton.m in Sources */ = {isa = PBXBuildFile; fileRef = F7CA1EC820E7E3FE002CC65E /* PKDownloadButton.m */; };
 		F7CA1ED820E7E3FE002CC65E /* PKBorderedButton.m in Sources */ = {isa = PBXBuildFile; fileRef = F7CA1ECA20E7E3FE002CC65E /* PKBorderedButton.m */; };
 		F7CA1ED920E7E3FE002CC65E /* NSLayoutConstraint+PKDownloadButton.m in Sources */ = {isa = PBXBuildFile; fileRef = F7CA1ECE20E7E3FE002CC65E /* NSLayoutConstraint+PKDownloadButton.m */; };
+		F7D1612023CF19E30039EBBF /* NCViewerRichWorkspace.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F7D1611F23CF19E30039EBBF /* NCViewerRichWorkspace.storyboard */; };
 		F7D2D127230804E000FD3ED7 /* NCXMLListParser.m in Sources */ = {isa = PBXBuildFile; fileRef = F7D2D126230804E000FD3ED7 /* NCXMLListParser.m */; };
 		F7D2D128230804E000FD3ED7 /* NCXMLListParser.m in Sources */ = {isa = PBXBuildFile; fileRef = F7D2D126230804E000FD3ED7 /* NCXMLListParser.m */; };
 		F7D2D129230804E000FD3ED7 /* NCXMLListParser.m in Sources */ = {isa = PBXBuildFile; fileRef = F7D2D126230804E000FD3ED7 /* NCXMLListParser.m */; };
@@ -1238,6 +1239,7 @@
 		F7D0E65E1BC5042E008D989A /* CCDetail.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = CCDetail.h; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; };
 		F7D0E65F1BC5042E008D989A /* CCDetail.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = CCDetail.m; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objc; };
 		F7D154271E2392A300202FD9 /* Nextcloud-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "Nextcloud-Bridging-Header.h"; sourceTree = "<group>"; };
+		F7D1611F23CF19E30039EBBF /* NCViewerRichWorkspace.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = NCViewerRichWorkspace.storyboard; sourceTree = "<group>"; };
 		F7D2D125230804DF00FD3ED7 /* NCXMLListParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NCXMLListParser.h; sourceTree = "<group>"; };
 		F7D2D126230804E000FD3ED7 /* NCXMLListParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NCXMLListParser.m; sourceTree = "<group>"; };
 		F7D423161F0596AC009C9782 /* AppIcon-076.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "AppIcon-076.png"; sourceTree = "<group>"; };
@@ -2233,6 +2235,7 @@
 				F790110D21415BF600D7B136 /* NCViewerRichdocument.swift */,
 				F78A18B523CDD07D00F681F3 /* NCViewerNextcloudText.swift */,
 				F78A18B723CDE2B300F681F3 /* NCViewerRichWorkspace.swift */,
+				F7D1611F23CF19E30039EBBF /* NCViewerRichWorkspace.storyboard */,
 				F7FB1D3D215E191D00D669EA /* NCViewerDocumentWeb.swift */,
 				F79630ED215527D40015EEA5 /* NCViewerMedia.swift */,
 			);
@@ -3200,6 +3203,7 @@
 				F774DF0F1FCC26BE002AF9FC /* iTunesArtwork@1x.png in Resources */,
 				F78ACD54219047D40088454D /* NCSectionFooter.xib in Resources */,
 				F77B0F611D118A16002130FE /* Acknowledgements.rtf in Resources */,
+				F7D1612023CF19E30039EBBF /* NCViewerRichWorkspace.storyboard in Resources */,
 				F77B0F631D118A16002130FE /* Localizable.strings in Resources */,
 				F7632FC1218353AA00721B71 /* NCTrashSectionFooter.xib in Resources */,
 				F7D4234C1F0596AC009C9782 /* Reader-Print@3x.png in Resources */,

+ 0 - 1
iOSClient/CCGlobal.h

@@ -206,7 +206,6 @@
 #define selectorUploadAutoUpload                        @"uploadAutoUpload"
 #define selectorUploadAutoUploadAll                     @"uploadAutoUploadAll"
 #define selectorUploadFile                              @"uploadFile"
-#define selectorViewerRichWorkspace                     @"viewerRichWorkspace"
 
 // Metadata : FileType
 #define k_metadataTypeFile_audio                        @"audio"

+ 32 - 59
iOSClient/Main/CCDetail.m

@@ -219,54 +219,43 @@
         // Nextcloud Text - RichWorkspace
         if ([[NCUtility sharedInstance] isDirectEditing:self.metadataDetail] != nil && appDelegate.reachability.isReachable) {
             
-            if ([self.selectorDetail isEqualToString:selectorViewerRichWorkspace]) {
-                
-                self.edgesForExtendedLayout = UIRectEdgeBottom;
-                [self createToolbar];
-                NCViewerRichWorkspace *viewerRichWorkspace = [NCViewerRichWorkspace new];
-                [viewerRichWorkspace viewerAt:self.metadataDetail detail:self];
-                return;
-                
-            } else {
-                
-                NSString *editor = [[NCUtility sharedInstance] isDirectEditing:self.metadataDetail];
-                if ([editor.lowercaseString isEqualToString:@"nextcloud text"]) {
-                
-                    if([self.metadataDetail.url isEqualToString:@""]) {
-                        
-                        [[NCUtility sharedInstance] startActivityIndicatorWithView:self.view bottom:0];
+            NSString *editor = [[NCUtility sharedInstance] isDirectEditing:self.metadataDetail];
+            if ([editor.lowercaseString isEqualToString:@"nextcloud text"]) {
+            
+                if([self.metadataDetail.url isEqualToString:@""]) {
+                    
+                    [[NCUtility sharedInstance] startActivityIndicatorWithView:self.view bottom:0];
+                    
+                    NSString *fileNamePath = [CCUtility returnFileNamePathFromFileName:self.metadataDetail.fileName serverUrl:self.metadataDetail.serverUrl activeUrl:appDelegate.activeUrl];
+                    [[NCCommunication sharedInstance] NCTextOpenFileWithUrlString:appDelegate.activeUrl fileNamePath:fileNamePath editor: @"text" account:self.metadataDetail.account completionHandler:^(NSString *account, NSString *url, NSInteger errorCode, NSString *errorMessage) {
                         
-                        NSString *fileNamePath = [CCUtility returnFileNamePathFromFileName:self.metadataDetail.fileName serverUrl:self.metadataDetail.serverUrl activeUrl:appDelegate.activeUrl];
-                        [[NCCommunication sharedInstance] NCTextOpenFileWithUrlString:appDelegate.activeUrl fileNamePath:fileNamePath editor: @"text" account:self.metadataDetail.account completionHandler:^(NSString *account, NSString *url, NSInteger errorCode, NSString *errorMessage) {
+                        if (errorCode == 0 && [account isEqualToString:appDelegate.activeAccount]) {
+                            
+                            self.nextcloudText = [[NCViewerNextcloudText alloc] initWithFrame:self.view.bounds configuration:[WKWebViewConfiguration new]];
+                            [self.view addSubview:self.nextcloudText];
+                            [self.nextcloudText viewerAt:url detail:self metadata:self.metadataDetail];
+                            
+                        } else {
                             
-                            if (errorCode == 0 && [account isEqualToString:appDelegate.activeAccount]) {
-                                
-                                self.nextcloudText = [[NCViewerNextcloudText alloc] initWithFrame:self.view.bounds configuration:[WKWebViewConfiguration new]];
-                                [self.view addSubview:self.nextcloudText];
-                                [self.nextcloudText viewerAt:url detail:self metadata:self.metadataDetail];
-                                
+                            if (errorCode != 0) {
+                                [[NCContentPresenter shared] messageNotification:@"_error_" description:errorMessage delay:k_dismissAfterSecond type:messageTypeError errorCode:errorCode];
                             } else {
-                                
-                                if (errorCode != 0) {
-                                    [[NCContentPresenter shared] messageNotification:@"_error_" description:errorMessage delay:k_dismissAfterSecond type:messageTypeError errorCode:errorCode];
-                                } else {
-                                    NSLog(@"[LOG] It has been changed user during networking process, error.");
-                                }
-                                
-                                [self.navigationController popViewControllerAnimated:YES];
+                                NSLog(@"[LOG] It has been changed user during networking process, error.");
                             }
-                        }];
-                        
-                    } else {
-                        
-                        self.nextcloudText = [[NCViewerNextcloudText alloc] initWithFrame:self.view.bounds configuration:[WKWebViewConfiguration new]];
-                        [self.view addSubview:self.nextcloudText];
-                        [self.nextcloudText viewerAt:self.metadataDetail.url detail:self metadata:self.metadataDetail];
-                    }
+                            
+                            [self.navigationController popViewControllerAnimated:YES];
+                        }
+                    }];
+                    
+                } else {
+                    
+                    self.nextcloudText = [[NCViewerNextcloudText alloc] initWithFrame:self.view.bounds configuration:[WKWebViewConfiguration new]];
+                    [self.view addSubview:self.nextcloudText];
+                    [self.nextcloudText viewerAt:self.metadataDetail.url detail:self metadata:self.metadataDetail];
                 }
-                
-                return;
             }
+            
+            return;
         }
         
         // RichDocument
@@ -991,23 +980,7 @@
 {
     tableMetadata *metadata = [[NCManageDatabase sharedInstance] getMetadataWithPredicate:[NSPredicate predicateWithFormat:@"ocId == %@", self.metadataDetail.ocId]];
     
-    // Rich Workspace
-    if ([appDelegate.reachability isReachable] && metadata && [self.selectorDetail isEqualToString:selectorViewerRichWorkspace]) {
-      
-        // Remove all subview except Image
-        for (UIView *view in self.view.subviews) {
-            NSInteger tag = view.tag;
-            if (tag != 999) {
-                [view removeFromSuperview];
-            }
-        }
-        
-        self.selectorDetail = @"";
-        [self viewFile];
-    }
-    
-    // Text
-    else if (metadata && [self.selectorDetail isEqualToString:selectorLoadFileInternalView]) {
+    if (metadata && [self.selectorDetail isEqualToString:selectorLoadFileInternalView]) {
         
         UINavigationController* navigationController = [[UIStoryboard storyboardWithName:@"NCText" bundle:nil] instantiateViewControllerWithIdentifier:@"NCText"];
         

+ 1 - 1
iOSClient/Main/CCMain.m

@@ -1938,7 +1938,7 @@
 {
     tableMetadata *metadata = [[NCManageDatabase sharedInstance] getMetadataWithPredicate:[NSPredicate predicateWithFormat:@"account == %@ AND serverUrl == %@ AND fileNameView LIKE[c] %@", appDelegate.activeAccount, self.serverUrl, k_fileNameRichWorkspace.lowercaseString]];
     if (metadata) {
-        [self shouldPerformSegue:metadata selector:selectorViewerRichWorkspace];
+        //[self shouldPerformSegue:metadata selector:selectorViewerRichWorkspace];
     }
 }
 

+ 88 - 0
iOSClient/Viewer/NCViewerRichWorkspace.storyboard

@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15702" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="eDT-g5-qb3">
+    <device id="retina6_1" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15704"/>
+        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <scenes>
+        <!--Viewer Rich Workspace-->
+        <scene sceneID="5lu-RQ-5e2">
+            <objects>
+                <viewController id="6oU-Ar-6R2" customClass="NCViewerRichWorkspace" customModule="Nextcloud" customModuleProvider="target" sceneMemberID="viewController">
+                    <view key="view" contentMode="scaleToFill" id="Hcj-yo-mxA">
+                        <rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <toolbar opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="PhD-q3-64a">
+                                <rect key="frame" x="0.0" y="813" width="414" height="49"/>
+                                <items>
+                                    <barButtonItem title="Item" id="Hvx-vk-mTM"/>
+                                </items>
+                            </toolbar>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ZTH-4c-how" customClass="NCViewRichWorkspace" customModule="Nextcloud" customModuleProvider="target">
+                                <rect key="frame" x="0.0" y="88" width="414" height="725"/>
+                                <subviews>
+                                    <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" editable="NO" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="tWU-uH-OcN">
+                                        <rect key="frame" x="0.0" y="0.0" width="414" height="725"/>
+                                        <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                        <color key="textColor" systemColor="labelColor" cocoaTouchSystemColor="darkTextColor"/>
+                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                        <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
+                                    </textView>
+                                </subviews>
+                                <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
+                                <constraints>
+                                    <constraint firstItem="tWU-uH-OcN" firstAttribute="leading" secondItem="ZTH-4c-how" secondAttribute="leading" id="Etf-Ey-64j"/>
+                                    <constraint firstAttribute="trailing" secondItem="tWU-uH-OcN" secondAttribute="trailing" id="b6f-DP-hJI"/>
+                                    <constraint firstItem="tWU-uH-OcN" firstAttribute="top" secondItem="ZTH-4c-how" secondAttribute="top" id="d81-lI-ub5"/>
+                                    <constraint firstAttribute="bottom" secondItem="tWU-uH-OcN" secondAttribute="bottom" id="v0G-Wp-3yv"/>
+                                </constraints>
+                                <connections>
+                                    <outlet property="textView" destination="tWU-uH-OcN" id="kaU-Ye-UzC"/>
+                                </connections>
+                            </view>
+                        </subviews>
+                        <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
+                        <constraints>
+                            <constraint firstItem="ZTH-4c-how" firstAttribute="leading" secondItem="Isy-ab-db7" secondAttribute="leading" id="GN8-UG-8rE"/>
+                            <constraint firstItem="ZTH-4c-how" firstAttribute="top" secondItem="Isy-ab-db7" secondAttribute="top" id="KgT-gT-3KV"/>
+                            <constraint firstItem="Isy-ab-db7" firstAttribute="bottom" secondItem="PhD-q3-64a" secondAttribute="bottom" id="Wg0-V3-osp"/>
+                            <constraint firstItem="PhD-q3-64a" firstAttribute="leading" secondItem="Isy-ab-db7" secondAttribute="leading" id="ZCg-As-Mj2"/>
+                            <constraint firstItem="Isy-ab-db7" firstAttribute="trailing" secondItem="PhD-q3-64a" secondAttribute="trailing" id="hlV-u7-OaC"/>
+                            <constraint firstItem="Isy-ab-db7" firstAttribute="trailing" secondItem="ZTH-4c-how" secondAttribute="trailing" id="xKM-8k-2Bn"/>
+                            <constraint firstItem="PhD-q3-64a" firstAttribute="top" secondItem="ZTH-4c-how" secondAttribute="bottom" id="xPd-wR-Fvh"/>
+                        </constraints>
+                        <viewLayoutGuide key="safeArea" id="Isy-ab-db7"/>
+                    </view>
+                    <navigationItem key="navigationItem" id="YSS-NL-35O"/>
+                    <connections>
+                        <outlet property="viewRichWorkspace" destination="ZTH-4c-how" id="Tj4-ng-4pc"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="hXn-we-pg4" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="1013.0434782608696" y="23.4375"/>
+        </scene>
+        <!--Navigation Controller-->
+        <scene sceneID="yfZ-KI-HLn">
+            <objects>
+                <navigationController automaticallyAdjustsScrollViewInsets="NO" id="eDT-g5-qb3" sceneMemberID="viewController">
+                    <toolbarItems/>
+                    <navigationBar key="navigationBar" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" id="snn-6x-Fpr">
+                        <rect key="frame" x="0.0" y="44" width="414" height="44"/>
+                        <autoresizingMask key="autoresizingMask"/>
+                    </navigationBar>
+                    <nil name="viewControllers"/>
+                    <connections>
+                        <segue destination="6oU-Ar-6R2" kind="relationship" relationship="rootViewController" id="Mqf-fJ-MEu"/>
+                    </connections>
+                </navigationController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="bIe-TD-iXo" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="102.89855072463769" y="23.4375"/>
+        </scene>
+    </scenes>
+</document>

+ 8 - 18
iOSClient/Viewer/NCViewerRichWorkspace.swift

@@ -23,28 +23,18 @@
 
 import Foundation
 
-@objc class NCViewerRichWorkspace: NSObject {
+@objc class NCViewerRichWorkspace: UIViewController {
 
+    @IBOutlet weak var viewRichWorkspace: NCViewRichWorkspace!
+    
     let appDelegate = UIApplication.shared.delegate as! AppDelegate
-    var safeAreaBottom: CGFloat = 0
     
-    @objc func viewerAt(_ metadata: tableMetadata, detail: CCDetail) {
-        
-        if #available(iOS 11.0, *) {
-            safeAreaBottom = (UIApplication.shared.keyWindow?.safeAreaInsets.bottom)!
-        }
-        
-        let width: CGFloat = detail.view.frame.size.width
-        let height: CGFloat = detail.view.frame.size.height - safeAreaBottom - CGFloat(k_detail_Toolbar_Height)
-        
-        let viewRichWorkspace = Bundle.main.loadNibNamed("NCRichWorkspace", owner: self, options: nil)?.first as! NCViewRichWorkspace
-        viewRichWorkspace.autoresizingMask = [.flexibleWidth, .flexibleHeight]
-        viewRichWorkspace.frame = CGRect(x: CGFloat(0), y: CGFloat(0), width: width, height: height)
+    public var metadata: tableMetadata?
+    
+    override func viewDidLoad() {
+        super.viewDidLoad()
         
-        if let directory = NCManageDatabase.sharedInstance.getTableDirectory(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@", metadata.account, metadata.serverUrl)) {
-            viewRichWorkspace.setRichWorkspaceText(directory.richWorkspace)
-        }
         
-        detail.view.addSubview(viewRichWorkspace)
     }
+    
 }