Эх сурвалжийг харах

add detail

Signed-off-by: Marino Faggiana <marino@marinofaggiana.com>
Marino Faggiana 2 жил өмнө
parent
commit
362bb39570

+ 54 - 20
iOSClient/Share/NCShareHeaderView.xib

@@ -1,26 +1,27 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="19529" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21701" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
     <device id="retina4_0" orientation="landscape" appearance="light"/>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="19519"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21678"/>
         <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="NCShareHeaderView" customModule="Nextcloud" customModuleProvider="target">
-            <rect key="frame" x="0.0" y="0.0" width="474" height="100"/>
+            <rect key="frame" x="0.0" y="0.0" width="474" height="137"/>
             <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
             <subviews>
                 <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="79H-PA-1m2">
-                    <rect key="frame" x="20" y="0.0" width="100" height="100"/>
+                    <rect key="frame" x="10" y="10" width="70" height="70"/>
                     <constraints>
-                        <constraint firstAttribute="width" secondItem="79H-PA-1m2" secondAttribute="height" id="kPd-Ha-PKN"/>
+                        <constraint firstAttribute="height" constant="70" id="6Ia-AZ-nA8"/>
+                        <constraint firstAttribute="width" constant="70" id="ibY-W5-Q0w"/>
                     </constraints>
                 </imageView>
                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="headTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="n1G-pn-D8s" customClass="MarqueeLabel" customModule="MarqueeLabel">
-                    <rect key="frame" x="128" y="8" width="326" height="18"/>
+                    <rect key="frame" x="95" y="8" width="369" height="18"/>
                     <fontDescription key="fontDescription" type="system" pointSize="15"/>
                     <nil key="textColor"/>
                     <nil key="highlightedColor"/>
@@ -29,10 +30,10 @@
                     </userDefinedRuntimeAttributes>
                 </label>
                 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="EaW-fI-EmD">
-                    <rect key="frame" x="128" y="77" width="15" height="15"/>
+                    <rect key="frame" x="60" y="5" width="25" height="25"/>
                     <constraints>
-                        <constraint firstAttribute="width" constant="15" id="GQs-ak-G4R"/>
-                        <constraint firstAttribute="height" constant="15" id="gFH-uD-FZ0"/>
+                        <constraint firstAttribute="width" constant="25" id="GQs-ak-G4R"/>
+                        <constraint firstAttribute="height" constant="25" id="gFH-uD-FZ0"/>
                     </constraints>
                     <state key="normal" image="star.fill"/>
                     <connections>
@@ -40,32 +41,65 @@
                     </connections>
                 </button>
                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bOQ-tC-40T">
-                    <rect key="frame" x="148" y="77" width="31" height="15"/>
+                    <rect key="frame" x="95" y="36" width="31" height="15"/>
                     <fontDescription key="fontDescription" type="system" pointSize="12"/>
                     <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
                     <nil key="highlightedColor"/>
                 </label>
+                <label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9Ka-tq-Zu3">
+                    <rect key="frame" x="95" y="56" width="31" height="15"/>
+                    <fontDescription key="fontDescription" type="system" pointSize="12"/>
+                    <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
+                    <nil key="highlightedColor"/>
+                </label>
+                <label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fMu-na-A5C">
+                    <rect key="frame" x="95" y="72" width="31" height="15"/>
+                    <fontDescription key="fontDescription" type="system" pointSize="12"/>
+                    <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
+                    <nil key="highlightedColor"/>
+                </label>
+                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="zBQ-CU-9KH">
+                    <rect key="frame" x="414" y="33.5" width="50" height="20"/>
+                    <constraints>
+                        <constraint firstAttribute="width" constant="50" id="0dv-3H-XVk"/>
+                        <constraint firstAttribute="height" constant="20" id="UVW-of-LtA"/>
+                    </constraints>
+                    <fontDescription key="fontDescription" type="system" pointSize="10"/>
+                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                    <state key="normal" title="Details"/>
+                    <connections>
+                        <action selector="touchUpInsideDetails:" destination="iN0-l3-epB" eventType="touchUpInside" id="6SM-Tx-oCY"/>
+                    </connections>
+                </button>
             </subviews>
             <constraints>
-                <constraint firstAttribute="trailing" secondItem="n1G-pn-D8s" secondAttribute="trailing" constant="20" id="0ss-6p-laS"/>
-                <constraint firstItem="EaW-fI-EmD" firstAttribute="leading" secondItem="79H-PA-1m2" secondAttribute="trailing" constant="8" symbolic="YES" id="7jw-Bt-GHm"/>
-                <constraint firstItem="bOQ-tC-40T" firstAttribute="leading" secondItem="EaW-fI-EmD" secondAttribute="trailing" constant="5" id="HNe-K2-JNt"/>
-                <constraint firstAttribute="bottom" secondItem="bOQ-tC-40T" secondAttribute="bottom" constant="8" id="LkB-ps-xwS"/>
-                <constraint firstItem="n1G-pn-D8s" firstAttribute="leading" secondItem="79H-PA-1m2" secondAttribute="trailing" constant="8" symbolic="YES" id="ca1-QS-7XL"/>
-                <constraint firstItem="EaW-fI-EmD" firstAttribute="centerY" secondItem="bOQ-tC-40T" secondAttribute="centerY" id="g7i-UL-F1V"/>
+                <constraint firstAttribute="trailing" secondItem="n1G-pn-D8s" secondAttribute="trailing" constant="10" id="0ss-6p-laS"/>
+                <constraint firstItem="fMu-na-A5C" firstAttribute="leading" secondItem="79H-PA-1m2" secondAttribute="trailing" constant="15" id="465-m3-yEK"/>
+                <constraint firstItem="79H-PA-1m2" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="10" id="4s8-dQ-pZc"/>
+                <constraint firstItem="79H-PA-1m2" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="10" id="8Pt-Zl-gmo"/>
+                <constraint firstItem="n1G-pn-D8s" firstAttribute="leading" secondItem="79H-PA-1m2" secondAttribute="trailing" constant="15" id="9E4-gA-8Pl"/>
+                <constraint firstItem="fMu-na-A5C" firstAttribute="top" secondItem="9Ka-tq-Zu3" secondAttribute="bottom" constant="1" id="CDG-G0-9j0"/>
+                <constraint firstItem="EaW-fI-EmD" firstAttribute="trailing" secondItem="79H-PA-1m2" secondAttribute="trailing" constant="5" id="CFN-yC-74Q"/>
+                <constraint firstItem="zBQ-CU-9KH" firstAttribute="centerY" secondItem="bOQ-tC-40T" secondAttribute="centerY" id="LWk-jf-P5S"/>
+                <constraint firstAttribute="trailing" secondItem="zBQ-CU-9KH" secondAttribute="trailing" constant="10" id="PRm-kq-66J"/>
+                <constraint firstItem="9Ka-tq-Zu3" firstAttribute="top" secondItem="bOQ-tC-40T" secondAttribute="bottom" constant="5" id="RUS-Ib-asS"/>
+                <constraint firstItem="bOQ-tC-40T" firstAttribute="leading" secondItem="79H-PA-1m2" secondAttribute="trailing" constant="15" id="X9i-0r-AYA"/>
+                <constraint firstItem="9Ka-tq-Zu3" firstAttribute="leading" secondItem="79H-PA-1m2" secondAttribute="trailing" constant="15" id="boF-Gc-sBr"/>
+                <constraint firstItem="bOQ-tC-40T" firstAttribute="top" secondItem="n1G-pn-D8s" secondAttribute="bottom" constant="10" id="dgl-uw-rsa"/>
                 <constraint firstItem="n1G-pn-D8s" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="8" id="gf7-1r-fAJ"/>
-                <constraint firstItem="79H-PA-1m2" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="pxE-GL-Wu8"/>
-                <constraint firstItem="79H-PA-1m2" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="20" symbolic="YES" id="sPO-Xj-c1R"/>
-                <constraint firstAttribute="bottom" secondItem="79H-PA-1m2" secondAttribute="bottom" id="yMh-bh-mR7"/>
+                <constraint firstItem="79H-PA-1m2" firstAttribute="top" secondItem="EaW-fI-EmD" secondAttribute="top" constant="5" id="nhT-z8-S6d"/>
             </constraints>
             <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
             <connections>
+                <outlet property="creation" destination="9Ka-tq-Zu3" id="ASk-yP-Tzw"/>
+                <outlet property="details" destination="zBQ-CU-9KH" id="taT-D9-4PK"/>
                 <outlet property="favorite" destination="EaW-fI-EmD" id="dv5-Qo-tPx"/>
                 <outlet property="imageView" destination="79H-PA-1m2" id="t6m-wr-OQ5"/>
                 <outlet property="info" destination="bOQ-tC-40T" id="N7R-YH-Xek"/>
                 <outlet property="path" destination="n1G-pn-D8s" id="ckb-qc-lqb"/>
+                <outlet property="upload" destination="fMu-na-A5C" id="Eun-KE-xTc"/>
             </connections>
-            <point key="canvasLocation" x="-12.67605633802817" y="45"/>
+            <point key="canvasLocation" x="-12.67605633802817" y="79.6875"/>
         </view>
     </objects>
     <designables>

+ 33 - 7
iOSClient/Share/NCSharePaging.swift

@@ -295,10 +295,10 @@ class NCShareHeaderViewController: PagingViewController {
 
 class NCSharePagingView: PagingView {
 
-    static let headerHeight: CGFloat = 100
+    static let headerHeight: CGFloat = 90
     var metadata = tableMetadata()
 
-    var headerHeightConstraint: NSLayoutConstraint?
+    public var headerHeightConstraint: NSLayoutConstraint?
 
     // MARK: - View Life Cycle
 
@@ -318,6 +318,11 @@ class NCSharePagingView: PagingView {
         headerView.backgroundColor = .systemBackground
         headerView.ocId = metadata.ocId
 
+        let dateFormatter = DateFormatter()
+        dateFormatter.dateStyle = .short
+        dateFormatter.timeStyle = .short
+        dateFormatter.locale = Locale.current
+
         if FileManager.default.fileExists(atPath: CCUtility.getDirectoryProviderStorageIconOcId(metadata.ocId, etag: metadata.etag)) {
             headerView.imageView.image = UIImage(contentsOfFile: CCUtility.getDirectoryProviderStorageIconOcId(metadata.ocId, etag: metadata.etag))
         } else {
@@ -339,15 +344,24 @@ class NCSharePagingView: PagingView {
         } else {
             headerView.favorite.setImage(NCUtility.shared.loadImage(named: "star.fill", color: .systemGray, size: 20), for: .normal)
         }
-        headerView.info.text = CCUtility.transformedSize(metadata.size) + ", " + CCUtility.dateDiff(metadata.date as Date)
+        headerView.info.text = CCUtility.transformedSize(metadata.size) + ", " + NSLocalizedString("_modified_", comment: "") + " " + dateFormatter.string(from: metadata.date as Date)
+        headerView.info.textColor = .systemGray
+        headerView.creation.text = NSLocalizedString("_creation_", comment: "") + " " + dateFormatter.string(from: metadata.creationDate as Date)
+        headerView.creation.textColor = .systemGray
+        headerView.upload.text = NSLocalizedString("_upload_", comment: "") + " " + dateFormatter.string(from: metadata.uploadDate as Date)
+        headerView.upload.textColor = .systemGray
+
+        headerView.details.setTitleColor(.label, for: .normal)
+        headerView.details.setTitle(NSLocalizedString("_details_", comment: ""), for: .normal)
+        headerView.details.layer.cornerRadius = 9
+        headerView.details.layer.masksToBounds = true
+        headerView.details.layer.backgroundColor = UIColor(red: 152.0 / 255.0, green: 167.0 / 255.0, blue: 181.0 / 255.0, alpha: 0.8).cgColor
+
         addSubview(headerView)
 
-        pageView.translatesAutoresizingMaskIntoConstraints = false
         collectionView.translatesAutoresizingMaskIntoConstraints = false
         headerView.translatesAutoresizingMaskIntoConstraints = false
-
-        headerHeightConstraint = headerView.heightAnchor.constraint(equalToConstant: NCSharePagingView.headerHeight)
-        headerHeightConstraint?.isActive = true
+        pageView.translatesAutoresizingMaskIntoConstraints = false
 
         NSLayoutConstraint.activate([
             collectionView.leadingAnchor.constraint(equalTo: leadingAnchor),
@@ -358,6 +372,7 @@ class NCSharePagingView: PagingView {
             headerView.topAnchor.constraint(equalTo: topAnchor),
             headerView.leadingAnchor.constraint(equalTo: leadingAnchor),
             headerView.trailingAnchor.constraint(equalTo: trailingAnchor),
+            headerView.heightAnchor.constraint(equalToConstant: NCSharePagingView.headerHeight),
 
             pageView.leadingAnchor.constraint(equalTo: leadingAnchor),
             pageView.trailingAnchor.constraint(equalTo: trailingAnchor),
@@ -372,7 +387,11 @@ class NCShareHeaderView: UIView {
     @IBOutlet weak var imageView: UIImageView!
     @IBOutlet weak var path: MarqueeLabel!
     @IBOutlet weak var info: UILabel!
+    @IBOutlet weak var creation: UILabel!
+    @IBOutlet weak var upload: UILabel!
     @IBOutlet weak var favorite: UIButton!
+    @IBOutlet weak var details: UIButton!
+
     var ocId = ""
 
     override func awakeFromNib() {
@@ -385,6 +404,7 @@ class NCShareHeaderView: UIView {
         guard let metadata = NCManageDatabase.shared.getMetadataFromOcId(ocId) else { return }
         NCNetworking.shared.favoriteMetadata(metadata) { error in
             if error == .success {
+                guard let metadata = NCManageDatabase.shared.getMetadataFromOcId(metadata.ocId) else { return }
                 self.favorite.setImage(NCUtility.shared.loadImage(
                     named: "star.fill",
                     color: metadata.favorite ? NCBrandColor.shared.yellowFavorite : .systemGray,
@@ -395,6 +415,12 @@ class NCShareHeaderView: UIView {
         }
     }
 
+    @IBAction func touchUpInsideDetails(_ sender: UIButton) {
+
+        creation.isHidden = !creation.isHidden
+        upload.isHidden = !upload.isHidden
+    }
+
     @objc func longTap(sender: UIGestureRecognizer) {
         UIPasteboard.general.string = path.text
         let error = NKError(errorCode: NCGlobal.shared.errorInternalError, errorDescription: "_copied_path_")

+ 4 - 0
iOSClient/Supporting Files/en.lproj/Localizable.strings

@@ -935,6 +935,10 @@
 "_created_"                 = "Created";
 "_recipients_"              = "Recipients";
 "_are_sure_"                = "Are you sure?";
+"_creation_"                = "Creation";
+"_modified_"                = "Modified";
+
+
 
 // Video
 "_select_trace_"            = "Select the trace";