FLEXImageShortcuts.m 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. //
  2. // FLEXImageShortcuts.m
  3. // FLEX
  4. //
  5. // Created by Tanner Bennett on 8/29/19.
  6. // Copyright © 2019 Flipboard. All rights reserved.
  7. //
  8. #import "FLEXImageShortcuts.h"
  9. #import "FLEXImagePreviewViewController.h"
  10. #import "FLEXAlert.h"
  11. @interface FLEXImageShortcuts ()
  12. @property (nonatomic, readonly) UIImage *image;
  13. @end
  14. @implementation FLEXImageShortcuts
  15. #pragma mark - Internal
  16. - (UIImage *)image {
  17. return self.object;
  18. }
  19. #pragma mark - Overrides
  20. + (instancetype)forObject:(UIImage *)image {
  21. // These additional rows will appear at the beginning of the shortcuts section.
  22. // The methods below are written in such a way that they will not interfere
  23. // with properties/etc being registered alongside these
  24. return [self forObject:image additionalRows:@[@"View Image", @"Save Image"]];
  25. }
  26. /// View image
  27. - (UIViewController *)viewControllerToPushForRow:(NSInteger)row {
  28. if (row == 0) {
  29. return [[FLEXImagePreviewViewController alloc] initWithImage:self.image];
  30. }
  31. return [super viewControllerToPushForRow:row];
  32. }
  33. /// Save image
  34. - (void (^)(UIViewController *))didSelectRowAction:(NSInteger)row {
  35. if (row == 1) {
  36. return ^(UIViewController *host) {
  37. UIImageWriteToSavedPhotosAlbum(self.image, nil, nil, nil);
  38. };
  39. }
  40. return [super didSelectRowAction:row];
  41. }
  42. /// "Save Image" does not need a disclosure indicator
  43. - (UITableViewCellAccessoryType)accessoryTypeForRow:(NSInteger)row {
  44. switch (row) {
  45. case 0: return UITableViewCellAccessoryDisclosureIndicator;
  46. case 1: return UITableViewCellAccessoryNone;
  47. default: return [super accessoryTypeForRow:row];
  48. }
  49. }
  50. @end