Ver Fonte

improvements share

marinofaggiana há 3 anos atrás
pai
commit
476c59fad9

+ 1 - 3
iOSClient/NCGlobal.swift

@@ -321,9 +321,7 @@ class NCGlobal: NSObject {
     let notificationCenterChangedLocation                       = "changedLocation"
     let notificationStatusAuthorizationChangedLocation          = "statusAuthorizationChangedLocation"
     
-    let notificationCenterSharePermissionReadOnly               = "sharePermissionReadOnly"
-    let notificationCenterSharePermissionEditing                = "sharePermissionEditing"
-    let notificationCenterSharePermissionFileDrop               = "sharePermissionFileDrop"
+    let notificationCenterShareChangePermission                 = "shareChangePermission"           // userInfo: idShare, permission, hideDownload
 }
 
 //let rootView = UIApplication.shared.keyWindow?.rootViewController?.view

+ 59 - 43
iOSClient/Share/NCShare.swift

@@ -121,14 +121,28 @@ class NCShare: UIViewController, UIGestureRecognizerDelegate, NCShareLinkCellDel
         
         // changeTheming
         NotificationCenter.default.addObserver(self, selector: #selector(changeTheming), name: NSNotification.Name(rawValue: NCGlobal.shared.notificationCenterChangeTheming), object: nil)
+        NotificationCenter.default.addObserver(self, selector: #selector(sharePermissionChangePermission(_:)), name: NSNotification.Name(rawValue: NCGlobal.shared.notificationCenterShareChangePermission), object: nil)
         
         changeTheming()
     }
     
+    // MARK: - Notification Center
+    
     @objc func changeTheming() {
         tableView.reloadData()
     }
+    
+    @objc func sharePermissionChangePermission(_ notification: NSNotification) {
         
+        if let userInfo = notification.userInfo as NSDictionary? {
+            if let idShare = userInfo["idShare"] as? Int, let permission = userInfo["permission"] as? Int, let hideDownload = userInfo["hideDownload"] as? Bool {
+                networking?.updateShare(idShare: idShare, password: nil, permission: permission, note: nil, label: nil, expirationDate: nil, hideDownload: hideDownload)
+            }
+        }
+    }
+
+    // MARK: -
+    
     @objc func reloadData() {
         let shares = NCManageDatabase.shared.getTableShares(metadata: metadata!)
         if shares.firstShareLink == nil {
@@ -227,23 +241,6 @@ class NCShare: UIViewController, UIGestureRecognizerDelegate, NCShareLinkCellDel
         }
     }
     
-    func switchCanEdit(with tableShare: tableShare?, switch: Bool, sender: UISwitch) {
-        
-        guard let tableShare = tableShare else { return }
-        guard let metadata = self.metadata else { return }
-
-        let canShare = CCUtility.isPermission(toCanShare: tableShare.permissions)
-        var permission: Int = 0
-        
-        if sender.isOn {
-            permission = CCUtility.getPermissionsValue(byCanEdit: true, andCanCreate: true, andCanChange: true, andCanDelete: true, andCanShare: canShare, andIsFolder: metadata.directory)
-        } else {
-            permission = CCUtility.getPermissionsValue(byCanEdit: false, andCanCreate: false, andCanChange: false, andCanDelete: false, andCanShare: canShare, andIsFolder: metadata.directory)
-        }
-        
-        networking?.updateShare(idShare: tableShare.idShare, password: nil, permission: permission, note: nil, label: nil, expirationDate: nil, hideDownload: tableShare.hideDownload)
-    }
-    
     func tapMenu(with tableShare: tableShare?, sender: Any) {
         
         guard let tableShare = tableShare else { return }
@@ -266,8 +263,19 @@ class NCShare: UIViewController, UIGestureRecognizerDelegate, NCShareLinkCellDel
             shareMenuViewWindow?.addGestureRecognizer(tap)
         }
     }
-    
-    /// MARK: - NCShareNetworkingDelegate
+
+    func quickStatus(with tableShare: tableShare?, sender: Any) {
+
+        guard let tableShare = tableShare else { return }
+
+        if tableShare.shareType != NCGlobal.shared.permissionDefaultFileRemoteShareNoSupportShareOption {
+            //self.quickStatusTableShare = tableShare
+            let quickStatusMenu = NCShareQuickStatusMenu()
+            quickStatusMenu.toggleMenu(viewController: self, directory: metadata!.directory, tableShare: tableShare)
+        }
+    }
+
+    // MARK: - NCShareNetworkingDelegate
     
     func readShareCompleted() {
         NotificationCenter.default.postOnMainThread(name: NCGlobal.shared.notificationCenterReloadDataNCShare)
@@ -279,7 +287,9 @@ class NCShare: UIViewController, UIGestureRecognizerDelegate, NCShareLinkCellDel
     
     func unShareCompleted() { }
     
-    func updateShareWithError(idShare: Int) { }
+    func updateShareWithError(idShare: Int) {
+        self.reloadData()
+    }
     
     func getSharees(sharees: [NCCommunicationSharee]?) {
         
@@ -318,7 +328,6 @@ class NCShare: UIViewController, UIGestureRecognizerDelegate, NCShareLinkCellDel
             let status = NCUtility.shared.getUserStatus(userIcon: sharee.userIcon, userStatus: sharee.userStatus, userMessage: sharee.userMessage)
             cell.imageStatus.image = status.onlineStatus
             cell.status.text = status.statusMessage
-            cell.fileUser = sharee.shareWith
             if cell.status.text?.count ?? 0 > 0 {
                 cell.centerTitle.constant = -5
             } else {
@@ -343,7 +352,7 @@ class NCShare: UIViewController, UIGestureRecognizerDelegate, NCShareLinkCellDel
 extension NCShare: UITableViewDelegate {
     
     func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
-        return 60
+        return 70
     }
 }
 
@@ -392,11 +401,9 @@ extension NCShare: UITableViewDataSource {
                 cell.delegate = self
                 cell.labelTitle.text = tableShare.shareWithDisplayname
                 cell.labelTitle.textColor = NCBrandColor.shared.label
-                cell.labelCanEdit.text = NSLocalizedString("_share_permission_edit_", comment: "")
-                cell.labelCanEdit.textColor = NCBrandColor.shared.label
                 cell.isUserInteractionEnabled = true
-                cell.switchCanEdit.isHidden = false
-                cell.labelCanEdit.isHidden = false
+                cell.labelQuickStatus.isHidden = false
+                cell.imageDownArrow.isHidden = false
                 cell.buttonMenu.isHidden = false
                 cell.imageItem.image = NCShareCommon.shared.getImageShareType(shareType: tableShare.shareType)
                 
@@ -407,20 +414,28 @@ extension NCShare: UITableViewDataSource {
                 let fileNameLocalPath = String(CCUtility.getDirectoryUserData()) + "/" + String(CCUtility.getStringUser(appDelegate.user, urlBase: appDelegate.urlBase)) + "-" + tableShare.shareWith + ".png"
                 NCOperationQueue.shared.downloadAvatar(user: tableShare.shareWith, fileNameLocalPath: fileNameLocalPath, placeholder: UIImage(named: "avatar"), cell: cell, view: tableView)
                 
-                if CCUtility.isAnyPermission(toEdit: tableShare.permissions) {
-                    cell.switchCanEdit.setOn(true, animated: false)
-                } else {
-                    cell.switchCanEdit.setOn(false, animated: false)
-                }
-                
                 // If the initiator or the recipient is not the current user, show the list of sharees without any options to edit it.
                 if tableShare.uidOwner != self.appDelegate.userId && tableShare.uidFileOwner != self.appDelegate.userId {
                     cell.isUserInteractionEnabled = false
-                    cell.switchCanEdit.isHidden = true
-                    cell.labelCanEdit.isHidden = true
+                    cell.labelQuickStatus.isHidden = true
+                    cell.imageDownArrow.isHidden = true
                     cell.buttonMenu.isHidden = true
                 }
                 
+                cell.btnQuickStatus.setTitle("", for: .normal)
+                cell.btnQuickStatus.contentHorizontalAlignment = .left
+                
+                if tableShare.permissions == NCGlobal.shared.permissionCreateShare {
+                    cell.labelQuickStatus.text = NSLocalizedString("_share_file_drop_", comment: "")
+                } else {
+                    // Read Only
+                    if CCUtility.isAnyPermission(toEdit: tableShare.permissions) {
+                        cell.labelQuickStatus.text = NSLocalizedString("_share_editing_", comment: "")
+                    } else {
+                        cell.labelQuickStatus.text = NSLocalizedString("_share_read_only_", comment: "")
+                    }
+                }
+
                 return cell
             }
         }
@@ -471,11 +486,12 @@ class NCShareUserCell: UITableViewCell, NCCellProtocol {
     
     @IBOutlet weak var imageItem: UIImageView!
     @IBOutlet weak var labelTitle: UILabel!
-    @IBOutlet weak var labelCanEdit: UILabel!
-    @IBOutlet weak var switchCanEdit: UISwitch!
     @IBOutlet weak var buttonMenu: UIButton!
     @IBOutlet weak var imageStatus: UIImageView!
     @IBOutlet weak var status: UILabel!
+    @IBOutlet weak var btnQuickStatus: UIButton!
+    @IBOutlet weak var labelQuickStatus: UILabel!
+    @IBOutlet weak var imageDownArrow: UIImageView!
     
     var tableShare: tableShare?
     var delegate: NCShareUserCellDelegate?
@@ -504,23 +520,23 @@ class NCShareUserCell: UITableViewCell, NCCellProtocol {
     override func awakeFromNib() {
         super.awakeFromNib()
         
-        switchCanEdit.transform = CGAffineTransform(scaleX: 0.75, y: 0.75)
-        switchCanEdit.onTintColor = NCBrandColor.shared.brandElement
         buttonMenu.setImage(UIImage.init(named: "shareMenu")!.image(color: .gray, size: 50), for: .normal)
-    }
-    
-    @IBAction func switchCanEditChanged(sender: UISwitch) {
-        delegate?.switchCanEdit(with: tableShare, switch: sender.isOn, sender: sender)
+        labelQuickStatus.textColor = NCBrandColor.shared.customer
+        imageDownArrow.image = UIImage(named: "downArrow")?.imageColor(NCBrandColor.shared.customer)
     }
     
     @IBAction func touchUpInsideMenu(_ sender: Any) {
         delegate?.tapMenu(with: tableShare, sender: sender)
     }
+    
+    @IBAction func quickStatusClicked(_ sender: Any) {
+        delegate?.quickStatus(with: tableShare, sender: sender)
+    }
 }
 
 protocol NCShareUserCellDelegate {
-    func switchCanEdit(with tableShare: tableShare?, switch: Bool, sender: UISwitch)
     func tapMenu(with tableShare: tableShare?, sender: Any)
+    func quickStatus(with tableShare: tableShare?, sender: Any)
 }
 
 // MARK: - NCShareUserDropDownCell

+ 11 - 8
iOSClient/Share/NCShareQuickStatusMenu.swift

@@ -10,9 +10,9 @@ import UIKit
 
 class NCShareQuickStatusMenu: NSObject {
         
-    func toggleMenu(viewController: UIViewController, directory: Bool, status: Int) {
+    func toggleMenu(viewController: UIViewController, directory: Bool, tableShare: tableShare) {
         
-        print(status)
+        print(tableShare.permissions)
         let menuViewController = UIStoryboard.init(name: "NCMenu", bundle: nil).instantiateInitialViewController() as! NCMenu
         var actions = [NCMenuAction]()
 
@@ -25,10 +25,11 @@ class NCShareQuickStatusMenu: NSObject {
             NCMenuAction(
                 title: NSLocalizedString("_share_read_only_", comment: ""),
                 icon: UIImage(),
-                selected: status == NCGlobal.shared.permissionReadShare + NCGlobal.shared.permissionShareShare,
+                selected: tableShare.permissions == NCGlobal.shared.permissionReadShare + NCGlobal.shared.permissionShareShare,
                 on: false,
                 action: { menuAction in
-                    NotificationCenter.default.postOnMainThread(name: NCGlobal.shared.notificationCenterSharePermissionReadOnly)
+                    let permission = CCUtility.getPermissionsValue(byCanEdit: false, andCanCreate: false, andCanChange: false, andCanDelete: false, andCanShare: false, andIsFolder: directory)
+                    NotificationCenter.default.postOnMainThread(name: NCGlobal.shared.notificationCenterShareChangePermission, userInfo: ["idShare": tableShare.idShare, "permission": permission, "hideDownload": tableShare.hideDownload])
                 }
             )
         )
@@ -37,10 +38,11 @@ class NCShareQuickStatusMenu: NSObject {
             NCMenuAction(
                 title: directory ? NSLocalizedString("_share_allow_upload_", comment: "") : NSLocalizedString("_share_editing_", comment: ""),
                 icon: UIImage(),
-                selected: status == NCGlobal.shared.permissionMaxFileShare || status == NCGlobal.shared.permissionMaxFolderShare ||  status == NCGlobal.shared.permissionDefaultFileRemoteShareNoSupportShareOption,
+                selected: tableShare.permissions == NCGlobal.shared.permissionMaxFileShare || tableShare.permissions == NCGlobal.shared.permissionMaxFolderShare ||  tableShare.permissions == NCGlobal.shared.permissionDefaultFileRemoteShareNoSupportShareOption,
                 on: false,
                 action: { menuAction in
-                    NotificationCenter.default.postOnMainThread(name: NCGlobal.shared.notificationCenterSharePermissionEditing)
+                    let permission = CCUtility.getPermissionsValue(byCanEdit: true, andCanCreate: true, andCanChange: true, andCanDelete: true, andCanShare: false, andIsFolder: directory)
+                    NotificationCenter.default.postOnMainThread(name: NCGlobal.shared.notificationCenterShareChangePermission, userInfo: ["idShare": tableShare.idShare, "permission": permission, "hideDownload": tableShare.hideDownload])
                 }
             )
         )
@@ -50,10 +52,11 @@ class NCShareQuickStatusMenu: NSObject {
                 NCMenuAction(
                     title: NSLocalizedString("_share_file_drop_", comment: ""),
                     icon: UIImage(),
-                    selected: status == NCGlobal.shared.permissionCreateShare,
+                    selected: tableShare.permissions == NCGlobal.shared.permissionCreateShare,
                     on: false,
                     action: { menuAction in
-                        NotificationCenter.default.postOnMainThread(name: NCGlobal.shared.notificationCenterSharePermissionFileDrop)
+                        let permission = NCGlobal.shared.permissionCreateShare
+                        NotificationCenter.default.postOnMainThread(name: NCGlobal.shared.notificationCenterShareChangePermission, userInfo: ["idShare": tableShare.idShare, "permission": permission, "hideDownload": tableShare.hideDownload])
                     }
                 )
             )

+ 44 - 37
iOSClient/Share/NCShareUserCell.xib

@@ -1,15 +1,15 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="17701" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="18122" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
     <device id="retina4_7" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17703"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="18093"/>
         <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"/>
-        <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" reuseIdentifier="cellUser" rowHeight="90" id="qJF-Yc-gKE" customClass="NCShareUserCell" customModule="Nextcloud" customModuleProvider="target">
+        <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" reuseIdentifier="cellUser" rowHeight="70" id="qJF-Yc-gKE" customClass="NCShareUserCell" customModule="Nextcloud" customModuleProvider="target">
             <rect key="frame" x="0.0" y="0.0" width="600" height="90"/>
             <autoresizingMask key="autoresizingMask"/>
             <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="qJF-Yc-gKE" id="3Oe-gU-3Nk">
@@ -32,8 +32,15 @@
                             </userDefinedRuntimeAttribute>
                         </userDefinedRuntimeAttributes>
                     </imageView>
+                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="cEA-ts-Q8I">
+                        <rect key="frame" x="30" y="50" width="20" height="20"/>
+                        <constraints>
+                            <constraint firstAttribute="height" constant="20" id="PGX-L0-VWR"/>
+                            <constraint firstAttribute="width" constant="20" id="XBj-Mx-dCc"/>
+                        </constraints>
+                    </imageView>
                     <label opaque="NO" userInteractionEnabled="NO" tag="101" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="shareWith" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="otH-mT-7Z4" userLabel="labelTitle">
-                        <rect key="frame" x="55" y="36" width="150" height="18"/>
+                        <rect key="frame" x="55" y="5" width="150" height="18"/>
                         <constraints>
                             <constraint firstAttribute="width" constant="150" id="4Oa-yZ-HZK"/>
                             <constraint firstAttribute="height" constant="18" id="iet-xr-SX6"/>
@@ -42,26 +49,34 @@
                         <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                         <nil key="highlightedColor"/>
                     </label>
-                    <switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="1Ju-M3-Ea4">
-                        <rect key="frame" x="418" y="29.5" width="49" height="31"/>
+                    <label opaque="NO" userInteractionEnabled="NO" tag="101" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="label quick status" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Wzb-Us-kQu">
+                        <rect key="frame" x="55" y="36" width="106" height="18"/>
                         <constraints>
-                            <constraint firstAttribute="height" constant="31" id="Yxu-hy-A7m"/>
-                            <constraint firstAttribute="width" constant="47" id="jeg-tb-g7e"/>
+                            <constraint firstAttribute="height" constant="18" id="08l-QE-tCg"/>
                         </constraints>
-                        <connections>
-                            <action selector="switchCanEditChangedWithSender:" destination="qJF-Yc-gKE" eventType="valueChanged" id="0c2-af-6CQ"/>
-                        </connections>
-                    </switch>
-                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Can edit" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="QXZ-ax-nlQ">
-                        <rect key="frame" x="475" y="34.5" width="80" height="21"/>
+                        <fontDescription key="fontDescription" type="system" pointSize="13"/>
+                        <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <nil key="highlightedColor"/>
+                    </label>
+                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="dY5-fF-IsK">
+                        <rect key="frame" x="161" y="32.5" width="25" height="25"/>
                         <constraints>
-                            <constraint firstAttribute="height" constant="21" id="WZK-ND-Vl1"/>
-                            <constraint firstAttribute="width" constant="80" id="guh-u2-aXB"/>
+                            <constraint firstAttribute="width" constant="25" id="VC5-7w-E0B"/>
+                            <constraint firstAttribute="height" constant="25" id="Wa4-aR-Yq3"/>
                         </constraints>
-                        <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                    </imageView>
+                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="user status" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cUC-wO-Mxm">
+                        <rect key="frame" x="56" y="69" width="494" height="16"/>
+                        <fontDescription key="fontDescription" type="system" pointSize="13"/>
                         <nil key="textColor"/>
                         <nil key="highlightedColor"/>
                     </label>
+                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="kaa-f4-d2t">
+                        <rect key="frame" x="55" y="0.0" width="500" height="90"/>
+                        <connections>
+                            <action selector="quickStatusClicked:" destination="qJF-Yc-gKE" eventType="touchUpInside" id="UpH-vO-bIh"/>
+                        </connections>
+                    </button>
                     <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="J1z-RG-U4A" userLabel="ButtonMenu">
                         <rect key="frame" x="570" y="35" width="20" height="20"/>
                         <constraints>
@@ -73,47 +88,39 @@
                             <action selector="touchUpInsideMenu:" destination="qJF-Yc-gKE" eventType="touchUpInside" id="NJn-zI-QQX"/>
                         </connections>
                     </button>
-                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="cEA-ts-Q8I">
-                        <rect key="frame" x="30" y="50" width="20" height="20"/>
-                        <constraints>
-                            <constraint firstAttribute="height" constant="20" id="PGX-L0-VWR"/>
-                            <constraint firstAttribute="width" constant="20" id="XBj-Mx-dCc"/>
-                        </constraints>
-                    </imageView>
-                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="O" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cUC-wO-Mxm">
-                        <rect key="frame" x="56" y="73" width="494" height="12"/>
-                        <fontDescription key="fontDescription" type="system" pointSize="10"/>
-                        <nil key="textColor"/>
-                        <nil key="highlightedColor"/>
-                    </label>
                 </subviews>
                 <constraints>
                     <constraint firstItem="otH-mT-7Z4" firstAttribute="leading" secondItem="qDs-UG-Mn7" secondAttribute="trailing" constant="10" id="7o5-Rj-6lV"/>
-                    <constraint firstItem="otH-mT-7Z4" firstAttribute="centerY" secondItem="3Oe-gU-3Nk" secondAttribute="centerY" id="JNE-HJ-E36"/>
-                    <constraint firstItem="QXZ-ax-nlQ" firstAttribute="leading" secondItem="1Ju-M3-Ea4" secondAttribute="trailing" constant="10" id="JOV-hM-J9e"/>
+                    <constraint firstItem="kaa-f4-d2t" firstAttribute="leading" secondItem="otH-mT-7Z4" secondAttribute="leading" id="EjD-fg-ltt"/>
                     <constraint firstItem="qDs-UG-Mn7" firstAttribute="leading" secondItem="3Oe-gU-3Nk" secondAttribute="leading" constant="5" id="KOm-wo-CBa"/>
-                    <constraint firstItem="J1z-RG-U4A" firstAttribute="leading" secondItem="QXZ-ax-nlQ" secondAttribute="trailing" constant="15" id="N3c-Vr-0Vq"/>
-                    <constraint firstItem="1Ju-M3-Ea4" firstAttribute="centerY" secondItem="3Oe-gU-3Nk" secondAttribute="centerY" id="Se0-y9-Dgs"/>
+                    <constraint firstItem="kaa-f4-d2t" firstAttribute="top" secondItem="3Oe-gU-3Nk" secondAttribute="top" id="MFe-I4-uWi"/>
+                    <constraint firstItem="otH-mT-7Z4" firstAttribute="top" secondItem="3Oe-gU-3Nk" secondAttribute="top" constant="5" id="PXb-Eh-v5c"/>
                     <constraint firstItem="cEA-ts-Q8I" firstAttribute="leading" secondItem="qDs-UG-Mn7" secondAttribute="trailing" constant="-15" id="Tah-P4-eci"/>
                     <constraint firstItem="J1z-RG-U4A" firstAttribute="centerY" secondItem="3Oe-gU-3Nk" secondAttribute="centerY" id="TvQ-yn-L5w"/>
                     <constraint firstAttribute="bottom" secondItem="cUC-wO-Mxm" secondAttribute="bottom" constant="5" id="XY1-34-ft3"/>
                     <constraint firstItem="cUC-wO-Mxm" firstAttribute="leading" secondItem="qDs-UG-Mn7" secondAttribute="trailing" constant="11" id="Y5D-bW-8kc"/>
+                    <constraint firstItem="dY5-fF-IsK" firstAttribute="centerY" secondItem="Wzb-Us-kQu" secondAttribute="centerY" id="ZQq-dk-l9c"/>
                     <constraint firstItem="qDs-UG-Mn7" firstAttribute="centerY" secondItem="3Oe-gU-3Nk" secondAttribute="centerY" id="ZrD-Aw-xkx"/>
-                    <constraint firstItem="QXZ-ax-nlQ" firstAttribute="centerY" secondItem="3Oe-gU-3Nk" secondAttribute="centerY" id="apA-j5-MyE"/>
+                    <constraint firstItem="J1z-RG-U4A" firstAttribute="leading" secondItem="kaa-f4-d2t" secondAttribute="trailing" constant="15" id="eXU-Lu-MUg"/>
+                    <constraint firstAttribute="bottom" secondItem="kaa-f4-d2t" secondAttribute="bottom" id="ecV-EG-AqZ"/>
                     <constraint firstItem="cEA-ts-Q8I" firstAttribute="top" secondItem="qDs-UG-Mn7" secondAttribute="bottom" constant="-15" id="j4V-Ji-PdK"/>
+                    <constraint firstItem="Wzb-Us-kQu" firstAttribute="centerY" secondItem="3Oe-gU-3Nk" secondAttribute="centerY" id="lrs-eT-Bjn"/>
                     <constraint firstAttribute="trailing" secondItem="J1z-RG-U4A" secondAttribute="trailing" constant="10" id="pQA-B9-MM5"/>
+                    <constraint firstItem="dY5-fF-IsK" firstAttribute="leading" secondItem="Wzb-Us-kQu" secondAttribute="trailing" id="vZw-cw-bBk"/>
+                    <constraint firstItem="Wzb-Us-kQu" firstAttribute="leading" secondItem="otH-mT-7Z4" secondAttribute="leading" id="vbt-49-CMn"/>
                     <constraint firstAttribute="trailing" secondItem="cUC-wO-Mxm" secondAttribute="trailing" constant="50" id="zHr-FD-PMG"/>
                 </constraints>
             </tableViewCellContentView>
             <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
             <connections>
+                <outlet property="btnQuickStatus" destination="kaa-f4-d2t" id="9cK-mI-hME"/>
                 <outlet property="buttonMenu" destination="J1z-RG-U4A" id="g71-Us-VMl"/>
+                <outlet property="imageDownArrow" destination="dY5-fF-IsK" id="itl-qi-MO5"/>
                 <outlet property="imageItem" destination="qDs-UG-Mn7" id="cRP-ne-dd0"/>
                 <outlet property="imageStatus" destination="cEA-ts-Q8I" id="uyY-c0-qG7"/>
-                <outlet property="labelCanEdit" destination="QXZ-ax-nlQ" id="7Fw-B4-eo4"/>
+                <outlet property="labelQuickStatus" destination="Wzb-Us-kQu" id="vDY-ad-WRs"/>
                 <outlet property="labelTitle" destination="otH-mT-7Z4" id="qxQ-kL-P3H"/>
                 <outlet property="status" destination="cUC-wO-Mxm" id="qHl-74-s3c"/>
-                <outlet property="switchCanEdit" destination="1Ju-M3-Ea4" id="TvH-ZH-KWR"/>
             </connections>
             <point key="canvasLocation" x="97.599999999999994" y="276.1619190404798"/>
         </tableViewCell>