marinofaggiana 6 年之前
父節點
當前提交
49697f5545

+ 4 - 4
Nextcloud.xcodeproj/project.pbxproj

@@ -231,6 +231,7 @@
 		F745B251222D871800346520 /* QRCodeReader.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F745B250222D871800346520 /* QRCodeReader.framework */; };
 		F745B253222D88AE00346520 /* NCLoginQRCode.swift in Sources */ = {isa = PBXBuildFile; fileRef = F745B252222D88AE00346520 /* NCLoginQRCode.swift */; };
 		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, ); }; };
 		F74E432620B5547700C2E54C /* NCNetworkingEndToEnd.m in Sources */ = {isa = PBXBuildFile; fileRef = F74E432520B5547700C2E54C /* NCNetworkingEndToEnd.m */; };
 		F74E432720B5547700C2E54C /* NCNetworkingEndToEnd.m in Sources */ = {isa = PBXBuildFile; fileRef = F74E432520B5547700C2E54C /* NCNetworkingEndToEnd.m */; };
@@ -343,7 +344,6 @@
 		F76C6F8E21943C8C0063591B /* NCActionSheetHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = F76C6F8D21943C8C0063591B /* NCActionSheetHeader.swift */; };
 		F76E71E52244DF6900690001 /* Zip.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F76E71E42244DF6900690001 /* Zip.framework */; };
 		F76E71E72244F48400690001 /* NCViewerImagemeter.swift in Sources */ = {isa = PBXBuildFile; fileRef = F76E71E62244F48400690001 /* NCViewerImagemeter.swift */; };
-		F76E71E92244FA0500690001 /* NCViewerImagemeter.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F76E71E82244FA0500690001 /* NCViewerImagemeter.storyboard */; };
 		F771E3D320E2392D00AFB62D /* FileProviderExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = F771E3D220E2392D00AFB62D /* FileProviderExtension.swift */; };
 		F771E3D520E2392D00AFB62D /* FileProviderItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = F771E3D420E2392D00AFB62D /* FileProviderItem.swift */; };
 		F771E3D720E2392D00AFB62D /* FileProviderEnumerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = F771E3D620E2392D00AFB62D /* FileProviderEnumerator.swift */; };
@@ -876,6 +876,7 @@
 		F747BA1E22354D2000971601 /* NCCreateFormUploadVoiceNote.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = NCCreateFormUploadVoiceNote.storyboard; sourceTree = "<group>"; };
 		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>"; };
 		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>"; };
@@ -1125,7 +1126,6 @@
 		F76C6F8D21943C8C0063591B /* NCActionSheetHeader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCActionSheetHeader.swift; sourceTree = "<group>"; };
 		F76E71E42244DF6900690001 /* Zip.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Zip.framework; path = Carthage/Build/iOS/Zip.framework; sourceTree = "<group>"; };
 		F76E71E62244F48400690001 /* NCViewerImagemeter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCViewerImagemeter.swift; sourceTree = "<group>"; };
-		F76E71E82244FA0500690001 /* NCViewerImagemeter.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = NCViewerImagemeter.storyboard; sourceTree = "<group>"; };
 		F76F23321ED4600700C40023 /* Share-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "Share-Bridging-Header.h"; sourceTree = "<group>"; };
 		F771E3D020E2392D00AFB62D /* File Provider Extension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "File Provider Extension.appex"; sourceTree = BUILT_PRODUCTS_DIR; };
 		F771E3D220E2392D00AFB62D /* FileProviderExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileProviderExtension.swift; sourceTree = "<group>"; };
@@ -2388,7 +2388,6 @@
 			children = (
 				F790110D21415BF600D7B136 /* NCViewerRichdocument.swift */,
 				F76E71E62244F48400690001 /* NCViewerImagemeter.swift */,
-				F76E71E82244FA0500690001 /* NCViewerImagemeter.storyboard */,
 				F7FB1D3D215E191D00D669EA /* NCViewerDocumentWeb.swift */,
 				F79630ED215527D40015EEA5 /* NCViewerMedia.swift */,
 			);
@@ -2753,6 +2752,7 @@
 			isa = PBXGroup;
 			children = (
 				F7D7B0D32245271100E6FE36 /* IMImagemeter.swift */,
+				F7499A1B2247AD3A00A7D630 /* IMImagemeterView.xib */,
 			);
 			path = Imagemeter;
 			sourceTree = "<group>";
@@ -3249,7 +3249,6 @@
 				F77B0EFE1D118A16002130FE /* CCUploadFromOtherUpp.storyboard in Resources */,
 				F762CB991EACB84400B38484 /* icon-success.png in Resources */,
 				F7F54CF81E5B14C700E19C62 /* PlayButtonOverlayLargeTap@2x.png in Resources */,
-				F76E71E92244FA0500690001 /* NCViewerImagemeter.storyboard in Resources */,
 				F73B4EEE1F470D9100BBEE4B /* Big5Freq.tab in Resources */,
 				F7D4233B1F0596AC009C9782 /* Reader-Button-N.png in Resources */,
 				F760F78821F21F61006B1A73 /* PhotoCropEditorBorder@2x.png in Resources */,
@@ -3326,6 +3325,7 @@
 				F7F54CFB1E5B14C700E19C62 /* UIBarButtonItemArrowLeft@2x.png in Resources */,
 				F7C525A21E3B6DA800FFE02C /* CCNotification.storyboard in Resources */,
 				F7F54CEB1E5B14C700E19C62 /* ImageSelectedOn.png in Resources */,
+				F7499A1C2247AD3A00A7D630 /* IMImagemeterView.xib in Resources */,
 				F72D1003210B67CE009C96B7 /* GoogleService-Info.plist in Resources */,
 				F762CB951EACB84400B38484 /* icon-error.png in Resources */,
 				F7F54CF01E5B14C700E19C62 /* ImageSelectedSmallOff@3x.png in Resources */,

+ 46 - 0
iOSClient/Imagemeter/IMImagemeterView.xib

@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+    <device id="retina4_7" orientation="portrait">
+        <adaptation id="fullscreen"/>
+    </device>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14460.20"/>
+        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="IMImagemeterView" customModule="Nextcloud" customModuleProvider="target">
+            <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+            <subviews>
+                <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="1ij-2s-LYq">
+                    <rect key="frame" x="0.0" y="215.5" width="375" height="256"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="256" id="LfB-Mf-Syk"/>
+                    </constraints>
+                </imageView>
+                <progressView opaque="NO" contentMode="scaleToFill" verticalHuggingPriority="750" progress="0.5" translatesAutoresizingMaskIntoConstraints="NO" id="6f5-Kb-BAR">
+                    <rect key="frame" x="0.0" y="471.5" width="375" height="2"/>
+                </progressView>
+            </subviews>
+            <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+            <constraints>
+                <constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="6f5-Kb-BAR" secondAttribute="trailing" id="OPB-z2-8ro"/>
+                <constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="1ij-2s-LYq" secondAttribute="trailing" id="dgH-RG-ZfA"/>
+                <constraint firstItem="6f5-Kb-BAR" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" id="mQc-Fk-9H5"/>
+                <constraint firstItem="1ij-2s-LYq" firstAttribute="centerY" secondItem="vUN-kp-3ea" secondAttribute="centerY" id="rw2-di-c3M"/>
+                <constraint firstItem="6f5-Kb-BAR" firstAttribute="top" secondItem="1ij-2s-LYq" secondAttribute="bottom" id="svd-nV-djc"/>
+                <constraint firstItem="1ij-2s-LYq" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" id="xtT-oj-SZN"/>
+            </constraints>
+            <viewLayoutGuide key="safeArea" id="vUN-kp-3ea"/>
+            <connections>
+                <outlet property="img" destination="1ij-2s-LYq" id="joC-Iz-qCc"/>
+                <outlet property="imgHeightConstraint" destination="LfB-Mf-Syk" id="WeS-Qi-gl1"/>
+                <outlet property="progressView" destination="6f5-Kb-BAR" id="nc5-MB-GOs"/>
+            </connections>
+        </view>
+    </objects>
+</document>

+ 6 - 0
iOSClient/Main/CCDetail.m

@@ -248,6 +248,12 @@
         [self createToolbar];
         [[NCViewerDocumentWeb sharedInstance] viewDocumentWebAt:self.metadataDetail detail:self];
     }
+    
+    // IMI File
+    if ([self.metadataDetail.typeFile isEqualToString: k_metadataTypeFile_imagemeter]) {
+        
+        [[NCViewerImagemeter sharedInstance] viewImagemeter:self.metadataDetail detail:self];
+    }
 }
 
 #pragma --------------------------------------------------------------------------------------------

+ 9 - 14
iOSClient/Main/NCMainCommon.swift

@@ -1221,31 +1221,26 @@ class NCNetworkingMain: NSObject, CCNetworkingDelegate {
                     metadata.typeFile = k_metadataTypeFile_unknown
                 }
                 
-                if metadata.typeFile == k_metadataTypeFile_compress || metadata.typeFile == k_metadataTypeFile_unknown {
-
-                    NCMainCommon.sharedInstance.openIn(metadata: metadata)
-                    
-                } else if metadata.typeFile == k_metadataTypeFile_imagemeter {
+                if metadata.typeFile == k_metadataTypeFile_imagemeter {
                     
                     do {
                         Zip.addCustomFileExtension("imi")
-
+                        
                         let source = URL(fileURLWithPath: CCUtility.getDirectoryProviderStorageFileID(metadata.fileID, fileNameView: metadata.fileNameView))
                         let destination =  URL(fileURLWithPath: CCUtility.getDirectoryProviderStorageFileID(metadata.fileID))
                         
                         try Zip.unzipFile(source, destination: destination, overwrite: true, password: nil)
                         
-                        let navigationController = UIStoryboard(name: "NCViewerImagemeter", bundle: nil).instantiateInitialViewController() as! UINavigationController
-                        let viewController = navigationController.topViewController as! NCViewerImagemeter
-                        
-                        viewController.metadata = metadata
-                        
-                        self.appDelegate.window.rootViewController?.present(navigationController, animated: true, completion: nil)
-                        
                     } catch {
                         appDelegate.messageNotification("_error_", description: "_error_decompressing_", visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: errorCode)
+                        return
                     }
-                                        
+                }
+                
+                if metadata.typeFile == k_metadataTypeFile_compress || metadata.typeFile == k_metadataTypeFile_unknown {
+
+                    NCMainCommon.sharedInstance.openIn(metadata: metadata)
+                    
                 } else {
                     
                     if appDelegate.activeMain.view.window != nil {

+ 3 - 3
iOSClient/Viewer/NCViewerDocumentWeb.swift

@@ -25,14 +25,14 @@ import Foundation
 
 class NCViewerDocumentWeb: NSObject {
     
+    let appDelegate = UIApplication.shared.delegate as! AppDelegate
+    var safeAreaBottom: Int = 0
+    
     @objc static let sharedInstance: NCViewerDocumentWeb = {
         let instance = NCViewerDocumentWeb()
         return instance
     }()
     
-    let appDelegate = UIApplication.shared.delegate as! AppDelegate
-    var safeAreaBottom: Int = 0
-    
     @objc func viewDocumentWebAt(_ metadata: tableMetadata, detail: CCDetail) {
         
         if !CCUtility.fileProviderStorageExists(metadata.fileID, fileNameView: metadata.fileNameView) {

+ 0 - 72
iOSClient/Viewer/NCViewerImagemeter.storyboard

@@ -1,72 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="qsc-iN-HPH">
-    <device id="retina4_7" orientation="portrait">
-        <adaptation id="fullscreen"/>
-    </device>
-    <dependencies>
-        <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14460.20"/>
-        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
-        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
-    </dependencies>
-    <scenes>
-        <!--Viewer Imagemeter-->
-        <scene sceneID="pQ9-8Z-gqX">
-            <objects>
-                <viewController id="awL-ti-wNg" customClass="NCViewerImagemeter" customModule="Nextcloud" customModuleProvider="target" sceneMemberID="viewController">
-                    <view key="view" contentMode="scaleToFill" id="EZL-ha-mXQ">
-                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
-                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-                        <subviews>
-                            <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="kz9-lQ-2Uc">
-                                <rect key="frame" x="0.0" y="237.5" width="375" height="256"/>
-                                <constraints>
-                                    <constraint firstAttribute="height" constant="256" id="QfZ-vy-737"/>
-                                </constraints>
-                            </imageView>
-                            <progressView opaque="NO" contentMode="scaleToFill" verticalHuggingPriority="750" progress="0.5" translatesAutoresizingMaskIntoConstraints="NO" id="VB6-rN-Jmz">
-                                <rect key="frame" x="0.0" y="493.5" width="375" height="2"/>
-                            </progressView>
-                        </subviews>
-                        <color key="backgroundColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-                        <constraints>
-                            <constraint firstItem="jl6-Io-SEU" firstAttribute="trailing" secondItem="kz9-lQ-2Uc" secondAttribute="trailing" id="9Mn-Qo-7AI"/>
-                            <constraint firstItem="VB6-rN-Jmz" firstAttribute="top" secondItem="kz9-lQ-2Uc" secondAttribute="bottom" id="9XM-DO-X7r"/>
-                            <constraint firstItem="VB6-rN-Jmz" firstAttribute="leading" secondItem="jl6-Io-SEU" secondAttribute="leading" id="ALf-9d-NTt"/>
-                            <constraint firstItem="kz9-lQ-2Uc" firstAttribute="centerY" secondItem="jl6-Io-SEU" secondAttribute="centerY" id="CX2-9j-jI8"/>
-                            <constraint firstItem="jl6-Io-SEU" firstAttribute="trailing" secondItem="VB6-rN-Jmz" secondAttribute="trailing" id="LsM-BK-5mZ"/>
-                            <constraint firstItem="kz9-lQ-2Uc" firstAttribute="leading" secondItem="jl6-Io-SEU" secondAttribute="leading" id="bR8-Vl-BZ7"/>
-                        </constraints>
-                        <viewLayoutGuide key="safeArea" id="jl6-Io-SEU"/>
-                    </view>
-                    <navigationItem key="navigationItem" id="ZuV-mh-zPX"/>
-                    <connections>
-                        <outlet property="img" destination="kz9-lQ-2Uc" id="r2x-XE-2Nf"/>
-                        <outlet property="imgHeightConstraint" destination="QfZ-vy-737" id="CZu-I3-wwo"/>
-                        <outlet property="progressView" destination="VB6-rN-Jmz" id="Kb7-5c-3Vg"/>
-                    </connections>
-                </viewController>
-                <placeholder placeholderIdentifier="IBFirstResponder" id="ISU-dv-V7S" userLabel="First Responder" sceneMemberID="firstResponder"/>
-            </objects>
-            <point key="canvasLocation" x="679.20000000000005" y="129.98500749625188"/>
-        </scene>
-        <!--Navigation Controller-->
-        <scene sceneID="p6d-cs-3da">
-            <objects>
-                <navigationController automaticallyAdjustsScrollViewInsets="NO" id="qsc-iN-HPH" sceneMemberID="viewController">
-                    <toolbarItems/>
-                    <navigationBar key="navigationBar" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" id="jti-R1-acA">
-                        <rect key="frame" x="0.0" y="20" width="375" height="44"/>
-                        <autoresizingMask key="autoresizingMask"/>
-                    </navigationBar>
-                    <nil name="viewControllers"/>
-                    <connections>
-                        <segue destination="awL-ti-wNg" kind="relationship" relationship="rootViewController" id="Rfb-px-LdY"/>
-                    </connections>
-                </navigationController>
-                <placeholder placeholderIdentifier="IBFirstResponder" id="lJQ-g9-WvY" userLabel="First Responder" sceneMemberID="firstResponder"/>
-            </objects>
-            <point key="canvasLocation" x="-260" y="129.98500749625188"/>
-        </scene>
-    </scenes>
-</document>

+ 47 - 38
iOSClient/Viewer/NCViewerImagemeter.swift

@@ -23,12 +23,10 @@
 
 import Foundation
 
-class NCViewerImagemeter: UIViewController {
+class NCViewerImagemeter: NSObject {
+    
+    private var imagemeterView: IMImagemeterView!
     
-    @IBOutlet weak var img: UIImageView!
-    @IBOutlet weak var imgHeightConstraint: NSLayoutConstraint!
-    @IBOutlet weak var progressView: UIProgressView!
-
     private let appDelegate = UIApplication.shared.delegate as! AppDelegate
     private var nameArchiveImagemeter: String = ""
     
@@ -42,32 +40,26 @@ class NCViewerImagemeter: UIViewController {
     private var durationPlayer: TimeInterval = 0
     private var counterSecondPlayer: TimeInterval = 0
 
-    var metadata: tableMetadata?
+    var metadata: tableMetadata!
+    var detail: CCDetail!
     
+    @objc static let sharedInstance: NCViewerImagemeter = {
+        let instance = NCViewerImagemeter()
+        return instance
+    }()
 
-    override func viewDidLoad() {
-        super.viewDidLoad()
+    @objc func viewImagemeter(_ metadata: tableMetadata, detail: CCDetail) {
         
-        self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: NSLocalizedString("_done_", comment: ""), style: UIBarButtonItem.Style.plain, target: self, action: #selector(close))
+        self.metadata = metadata
+        self.detail = detail
         
-        self.navigationController?.navigationBar.isTranslucent = false
-        self.navigationController?.navigationBar.barTintColor = NCBrandColor.sharedInstance.brand
-        self.navigationController?.navigationBar.tintColor = NCBrandColor.sharedInstance.brandText
-        self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: NCBrandColor.sharedInstance.brandText]
+        nameArchiveImagemeter = (metadata.fileNameView as NSString).deletingPathExtension
+        pathArchiveImagemeter = CCUtility.getDirectoryProviderStorageFileID(metadata.fileID) + "/" + nameArchiveImagemeter
         
-        nameArchiveImagemeter = (metadata!.fileNameView as NSString).deletingPathExtension
-        pathArchiveImagemeter = CCUtility.getDirectoryProviderStorageFileID(metadata?.fileID) + "/" + nameArchiveImagemeter
+        self.imagemeterView = IMImagemeterView.instanceFromNib() as? IMImagemeterView
+        self.imagemeterView.frame = CGRect(x: 0, y: 0, width: detail.view.frame.width, height: detail.view.frame.height)
         
-        self.navigationItem.title = nameArchiveImagemeter
-        
-        // Progress view
-        progressView.progressTintColor = NCBrandColor.sharedInstance.brandElement
-        progressView.trackTintColor = UIColor(red: 247.0/255.0, green: 247.0/255.0, blue: 247.0/255.0, alpha: 1.0)
-        progressView.progress = 0
-    }
-    
-    override func viewWillAppear(_ animated: Bool) {
-        super.viewWillAppear(animated)
+        detail.view.addSubview(imagemeterView)
         
         do {
             
@@ -87,10 +79,10 @@ class NCViewerImagemeter: UIViewController {
             print("error:\(error)")
         }
     }
-    
+
     @objc func updateTimer() {
         counterSecondPlayer += 1
-        progressView.progress = Float(counterSecondPlayer / durationPlayer)
+        imagemeterView.progressView.progress = Float(counterSecondPlayer / durationPlayer)
     }
     
     func imgThumbnails() {
@@ -104,10 +96,10 @@ class NCViewerImagemeter: UIViewController {
                 if let thumbnailsHeight = annotation.thumbnails.first?.height {
                     
                     let factor = Float(thumbnailsWidth) / Float(thumbnailsHeight)
-                    let imageWidth = self.view.bounds.size.width
+                    let imageWidth = imagemeterView.bounds.size.width
                     
-                    imgHeightConstraint.constant = CGFloat((Float(imageWidth) / factor))
-                    img.image = UIImage(contentsOfFile: pathArchiveImagemeter + "/" + thumbnailsFilename)
+                    imagemeterView.imgHeightConstraint.constant = CGFloat((Float(imageWidth) / factor))
+                    imagemeterView.img.image = UIImage(contentsOfFile: pathArchiveImagemeter + "/" + thumbnailsFilename)
                 }
             }
         }
@@ -121,9 +113,9 @@ class NCViewerImagemeter: UIViewController {
         
         for element in annotation.elements {
             
-            let coordinateNormalize =  IMImagemeterCodable.sharedInstance.convertCoordinate(x: element.center.x, y: element.center.y, width: Double(self.view.bounds.width), height: Double(imgHeightConstraint.constant), button: 30)
+            let coordinateNormalize =  IMImagemeterCodable.sharedInstance.convertCoordinate(x: element.center.x, y: element.center.y, width: Double(imagemeterView.bounds.width), height: Double(imagemeterView.imgHeightConstraint.constant), button: 30)
             let x = coordinateNormalize.x
-            let y = coordinateNormalize.y + Double(img.frame.origin.y)
+            let y = coordinateNormalize.y + Double(imagemeterView.img.frame.origin.y)
             
             let button = UIButton()
             button.frame = CGRect(x: x, y: y, width: 30, height: 30)
@@ -131,7 +123,7 @@ class NCViewerImagemeter: UIViewController {
             button.addTarget(self, action: #selector(buttonAction), for: .touchUpInside)
             button.tag = element.id
     
-            self.view.addSubview(button)
+            imagemeterView.addSubview(button)
         }
     }
     
@@ -160,10 +152,6 @@ class NCViewerImagemeter: UIViewController {
             }
         }
     }
-    
-    @objc func close() {
-        self.dismiss(animated: true, completion: nil)
-    }
 }
 
 extension NCViewerImagemeter: AVAudioPlayerDelegate {
@@ -175,7 +163,28 @@ extension NCViewerImagemeter: AVAudioPlayerDelegate {
         counterSecondPlayer = 0
         
         DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
-            self.progressView.progress = 0
+            self.imagemeterView.progressView.progress = 0
         }
     }
 }
+
+class IMImagemeterView: UIView {
+    
+    @IBOutlet weak var img: UIImageView!
+    @IBOutlet weak var imgHeightConstraint: NSLayoutConstraint!
+    @IBOutlet weak var progressView: UIProgressView!
+    
+    class func instanceFromNib() -> UIView {
+        return UINib(nibName: "IMImagemeterView", bundle: nil).instantiate(withOwner: nil, options: nil)[0] as! UIView
+    }
+    
+    required init?(coder aDecoder: NSCoder) {
+        super.init(coder: aDecoder)
+        
+        /*
+        progressView.progressTintColor = NCBrandColor.sharedInstance.brandElement
+        progressView.trackTintColor = UIColor(red: 247.0/255.0, green: 247.0/255.0, blue: 247.0/255.0, alpha: 1.0)
+        progressView.progress = 0
+        */
+    }
+}

+ 6 - 6
iOSClient/Viewer/NCViewerMedia.swift

@@ -10,12 +10,6 @@ import Foundation
 import KTVHTTPCache
 
 class NCViewerMedia: NSObject {
-    
-    @objc static let sharedInstance: NCViewerMedia = {
-        let viewMedia = NCViewerMedia()
-        viewMedia.setupHTTPCache()
-        return viewMedia
-    }()
 
     var detail: CCDetail!
     var metadata: tableMetadata!
@@ -23,6 +17,12 @@ class NCViewerMedia: NSObject {
     let appDelegate = UIApplication.shared.delegate as! AppDelegate
     var safeAreaBottom: Int = 0
 
+    @objc static let sharedInstance: NCViewerMedia = {
+        let viewMedia = NCViewerMedia()
+        viewMedia.setupHTTPCache()
+        return viewMedia
+    }()
+
     @objc func viewMedia(_ metadata: tableMetadata, detail: CCDetail) {
         
         var videoURLProxy: URL!

+ 4 - 4
iOSClient/Viewer/NCViewerRichdocument.swift

@@ -25,15 +25,15 @@ import Foundation
 
 class NCViewerRichdocument: NSObject, WKNavigationDelegate, WKScriptMessageHandler, NCSelectDelegate {
     
+    var detail: CCDetail!
+    var webView: WKWebView!
+    let appDelegate = UIApplication.shared.delegate as! AppDelegate
+
     @objc static let sharedInstance: NCViewerRichdocument = {
         let instance = NCViewerRichdocument()
         return instance
     }()
     
-    var detail: CCDetail!
-    var webView: WKWebView!
-    let appDelegate = UIApplication.shared.delegate as! AppDelegate
-
     @objc func viewRichDocumentAt(_ link: String, detail: CCDetail) {
         
         self.detail = detail