Ver código fonte

Add 3D touch in favorite view

marinofaggiana 6 anos atrás
pai
commit
f75cf40b96

+ 1 - 1
iOSClient/Favorites/CCFavorites.h

@@ -35,7 +35,7 @@
 
 @class tableMetadata;
 
-@interface CCFavorites : UIViewController <UITableViewDataSource, UITableViewDelegate, UIActionSheetDelegate, DZNEmptyDataSetSource, DZNEmptyDataSetDelegate, MGSwipeTableCellDelegate>
+@interface CCFavorites : UIViewController <UITableViewDataSource, UITableViewDelegate, UIActionSheetDelegate, DZNEmptyDataSetSource, DZNEmptyDataSetDelegate, MGSwipeTableCellDelegate, UIViewControllerPreviewingDelegate>
 
 @property (nonatomic, weak) IBOutlet UITableView *tableView;
 

+ 39 - 0
iOSClient/Favorites/CCFavorites.m

@@ -78,6 +78,12 @@
     self.tableView.emptyDataSetSource = self;
     self.tableView.delegate = self;
     
+    // Register for 3D Touch Previewing if available
+    if ([self.traitCollection respondsToSelector:@selector(forceTouchCapability)] && (self.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable))
+    {
+        [self registerForPreviewingWithDelegate:self sourceView:self.view];
+    }
+    
     // calculate _serverUrl
     if (!_serverUrl)
         _serverUrl = nil;
@@ -314,6 +320,39 @@
     [self presentViewController:alertController animated:YES completion:nil];
 }
 
+#pragma mark -
+#pragma --------------------------------------------------------------------------------------------
+#pragma mark ===== Peek & Pop  =====
+#pragma --------------------------------------------------------------------------------------------
+
+- (UIViewController *)previewingContext:(id<UIViewControllerPreviewing>)previewingContext viewControllerForLocation:(CGPoint)location
+{
+    CGPoint convertedLocation = [self.view convertPoint:location toView:self.tableView];
+    NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:convertedLocation];
+    tableMetadata *metadata = [[NCMainCommon sharedInstance] getMetadataFromSectionDataSourceIndexPath:indexPath sectionDataSource:sectionDataSource];
+    
+    CCCellMain *cell = [self.tableView cellForRowAtIndexPath:indexPath];
+    
+    if (cell) {
+        previewingContext.sourceRect = cell.frame;
+        CCPeekPop *viewController = [[UIStoryboard storyboardWithName:@"CCPeekPop" bundle:nil] instantiateViewControllerWithIdentifier:@"PeekPopImagePreview"];
+        
+        viewController.metadata = metadata;
+        viewController.imageFile = cell.file.image;
+        
+        return viewController;
+    }
+    
+    return nil;
+}
+
+- (void)previewingContext:(id<UIViewControllerPreviewing>)previewingContext commitViewController:(UIViewController *)viewControllerToCommit
+{
+    NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:previewingContext.sourceRect.origin];
+    
+    [self tableView:self.tableView didSelectRowAtIndexPath:indexPath];
+}
+
 #pragma mark -
 #pragma --------------------------------------------------------------------------------------------
 #pragma mark ===== menu action : Favorite, More, Delete [swipe] =====

+ 1 - 0
iOSClient/Main/CCMain.m

@@ -940,6 +940,7 @@
             
         viewController.metadata = metadata;
         viewController.imageFile = cell.file.image;
+        viewController.showShare = true;
         
         return viewController;
     }

+ 1 - 2
iOSClient/Media/NCMedia.swift

@@ -370,8 +370,7 @@ extension NCMedia: UIViewControllerPreviewingDelegate {
         previewingContext.sourceRect = cell.frame
         viewController.metadata = metadata
         viewController.imageFile = cell.imageItem.image
-        viewController.hideShare = true
-        
+
         return viewController
     }
     

+ 1 - 1
iOSClient/PeekPop/CCPeekPop.h

@@ -30,7 +30,7 @@
 
 @property (nonatomic, strong) tableMetadata *metadata;
 @property (nonatomic, strong) UIImage *imageFile;
-@property BOOL hideShare;
+@property BOOL showShare;
 
 @property (nonatomic, weak) IBOutlet UILabel *fileName;
 @property (nonatomic, weak) IBOutlet UIImageView *imagePreview;

+ 3 - 4
iOSClient/PeekPop/CCPeekPop.m

@@ -93,11 +93,10 @@
         [appDelegate.activeMain readShareWithAccount:appDelegate.activeAccount openWindow:YES metadata:self.metadata];
     }];
     
-    if (_hideShare == true) {
-        return @[openIn];
-
-    } else {
+    if (self.showShare == true) {
         return @[openIn, share];
+    } else {
+        return @[openIn];
     }
 }