From 4298d22e15e6c29aefe75e95956c9719d4546da2 Mon Sep 17 00:00:00 2001 From: lint <47455468+lint@users.noreply.github.com> Date: Fri, 20 Sep 2019 19:09:46 -0400 Subject: [PATCH] Fix new album crash --- Tweak.xm | 202 +++++++++++++++++++++++++++++-------------------------- control | 2 +- 2 files changed, 106 insertions(+), 98 deletions(-) diff --git a/Tweak.xm b/Tweak.xm index 299d7d4..95ec4a8 100644 --- a/Tweak.xm +++ b/Tweak.xm @@ -3,6 +3,8 @@ @property(assign,nonatomic) id delegate; @property(assign,nonatomic) NSArray* visibleCells; @property(assign,nonatomic) NSArray* indexPathsForVisibleItems; +@property(assign,nonatomic) id reorderDelegate; +@property(assign,nonatomic) id selectionDelegate; -(id) idexPathForItemAtPoint:(id) arg1; -(id) cellForItemAtIndexPath:(id) arg1; -(id) indexPathForCell:(id) arg1; @@ -126,129 +128,135 @@ %new -(void)ctrlScreenTapRecognized:(id) sender { + + if ([self selectionDelegate] && ![self reorderDelegate]) { - id gvController = [self delegate]; + id gvController = [self delegate]; - if ([gvController ctrlEnabled]){ + if ([gvController ctrlEnabled]){ - CGPoint tapPoint = [sender locationInView:self]; - NSIndexPath *nextIndexPath = [self indexPathForItemAtPoint:tapPoint]; - - if (![gvController ctrlFirstIndexPath]){ + CGPoint tapPoint = [sender locationInView:self]; + NSIndexPath *nextIndexPath = [self indexPathForItemAtPoint:tapPoint]; + + if (![gvController ctrlFirstIndexPath]){ - [gvController setCtrlFirstIndexPath:nextIndexPath]; - - - PUPhotosGridCell* firstSelectedCell = [self cellForItemAtIndexPath:nextIndexPath]; - - firstSelectedCell.ctrlSelectOverlayView = [[UIImageView alloc] init]; - firstSelectedCell.ctrlSelectOverlayView.frame = CGRectMake(0,0,31,31); - firstSelectedCell.ctrlSelectOverlayView.image = [UIImage imageWithContentsOfFile:@"/var/mobile/Library/Application Support/PhotoCtrl/check.png"]; - - [firstSelectedCell addSubview:firstSelectedCell.ctrlSelectOverlayView]; - - - } else { - - //PUPhotosGridCell* firstSelectedCell = [self cellForItemAtIndexPath:[gvController ctrlFirstIndexPath]]; - - //[firstSelectedCell.ctrlSelectOverlayView removeFromSuperview]; - //firstSelectedCell.ctrlSelectOverlayView = nil; - - NSRange indexRange; - NSInteger firstRow = [gvController ctrlFirstIndexPath].row; - NSInteger firstSection = [gvController ctrlFirstIndexPath].section; - NSInteger nextRow = nextIndexPath.row; - NSInteger nextSection = nextIndexPath.section; - - NSInteger lowRow = 0; - NSInteger highRow = 0; - NSInteger lowSection = 0; - NSInteger highSection = 0; - NSInteger sectionItemCount = 0; - - if (firstRow == nextRow && nextSection == firstSection){ + [gvController setCtrlFirstIndexPath:nextIndexPath]; - [gvController setCtrlFirstIndexPath:nil]; + PUPhotosGridCell* firstSelectedCell = [self cellForItemAtIndexPath:nextIndexPath]; + + firstSelectedCell.ctrlSelectOverlayView = [[UIImageView alloc] init]; + firstSelectedCell.ctrlSelectOverlayView.frame = CGRectMake(0,0,31,31); + firstSelectedCell.ctrlSelectOverlayView.image = [UIImage imageWithContentsOfFile:@"/var/mobile/Library/Application Support/PhotoCtrl/check.png"]; + + [firstSelectedCell addSubview:firstSelectedCell.ctrlSelectOverlayView]; + + } else { - - if (nextSection == firstSection){ - - if (firstRow < nextRow){ - indexRange = NSMakeRange(firstRow, nextRow - firstRow + 1); - } else { - indexRange = NSMakeRange(nextRow, firstRow - nextRow + 1); - } - - [gvController setSelected:YES itemsAtIndexes:[%c(NSIndexSet) indexSetWithIndexesInRange:indexRange] inSection:(long long)firstSection animated:NO]; - + + //PUPhotosGridCell* firstSelectedCell = [self cellForItemAtIndexPath:[gvController ctrlFirstIndexPath]]; + + //[firstSelectedCell.ctrlSelectOverlayView removeFromSuperview]; + //firstSelectedCell.ctrlSelectOverlayView = nil; + + NSRange indexRange; + NSInteger firstRow = [gvController ctrlFirstIndexPath].row; + NSInteger firstSection = [gvController ctrlFirstIndexPath].section; + NSInteger nextRow = nextIndexPath.row; + NSInteger nextSection = nextIndexPath.section; + + NSInteger lowRow = 0; + NSInteger highRow = 0; + NSInteger lowSection = 0; + NSInteger highSection = 0; + NSInteger sectionItemCount = 0; + + if (firstRow == nextRow && nextSection == firstSection){ + + [gvController setCtrlFirstIndexPath:nil]; + } else { - if (nextSection > firstSection){ + if (nextSection == firstSection){ - lowRow = firstRow; - lowSection = firstSection; - highRow = nextRow; - highSection = nextSection; - - } else if (nextSection < firstSection){ - - lowRow = nextRow; - lowSection = nextSection; - highRow = firstRow; - highSection = firstSection; - - } - - for (NSInteger i = lowSection; i <= highSection; i++){ - sectionItemCount = [gvController collectionView:self numberOfItemsInSection:i]; - - if (i == lowSection){ - indexRange = NSMakeRange(lowRow, sectionItemCount - lowRow); - } else if (i == highSection){ - indexRange = NSMakeRange(0, highRow+1); + if (firstRow < nextRow){ + indexRange = NSMakeRange(firstRow, nextRow - firstRow + 1); } else { - indexRange = NSMakeRange(0, sectionItemCount); + indexRange = NSMakeRange(nextRow, firstRow - nextRow + 1); } - [gvController setSelected:YES itemsAtIndexes:[%c(NSIndexSet) indexSetWithIndexesInRange:indexRange] inSection:(long long)i animated:NO]; - } - } + [gvController setSelected:YES itemsAtIndexes:[%c(NSIndexSet) indexSetWithIndexesInRange:indexRange] inSection:(long long)firstSection animated:NO]; - [gvController handleToggleSelectionOfItemAtIndexPath:nextIndexPath]; - - [gvController setCtrlEnabled:NO]; - + } else { + + if (nextSection > firstSection){ + + lowRow = firstRow; + lowSection = firstSection; + highRow = nextRow; + highSection = nextSection; + + } else if (nextSection < firstSection){ + + lowRow = nextRow; + lowSection = nextSection; + highRow = firstRow; + highSection = firstSection; + + } + + for (NSInteger i = lowSection; i <= highSection; i++){ + sectionItemCount = [gvController collectionView:self numberOfItemsInSection:i]; + + if (i == lowSection){ + indexRange = NSMakeRange(lowRow, sectionItemCount - lowRow); + } else if (i == highSection){ + indexRange = NSMakeRange(0, highRow+1); + } else { + indexRange = NSMakeRange(0, sectionItemCount); + } + + [gvController setSelected:YES itemsAtIndexes:[%c(NSIndexSet) indexSetWithIndexesInRange:indexRange] inSection:(long long)i animated:NO]; + } + } + + [gvController handleToggleSelectionOfItemAtIndexPath:nextIndexPath]; + + [gvController setCtrlEnabled:NO]; + + } } } + + [gvController updateCtrlButton]; } - - [gvController updateCtrlButton]; } -(id) dequeueReusableCellWithReuseIdentifier: (id) arg1 forIndexPath:(id) arg2{ - id orig = %orig; + id orig = %orig; - id gvController = [self delegate]; + if ([self selectionDelegate] && ![self reorderDelegate] && [orig isKindOfClass:[%c(PUPhotosGridCell) class]]) { - if ([orig ctrlSelectOverlayView]){ + id gvController = [self delegate]; - [orig ctrlSelectOverlayView].image = nil; - - if ([gvController ctrlEnabled] && [gvController ctrlFirstIndexPath]){ + if ([orig ctrlSelectOverlayView]){ - NSIndexPath* firstIndexPath = [gvController ctrlFirstIndexPath]; - NSIndexPath* thisIndexPath = arg2; + [orig ctrlSelectOverlayView].image = nil; + + if ([gvController ctrlEnabled] && [gvController ctrlFirstIndexPath]){ + + NSIndexPath* firstIndexPath = [gvController ctrlFirstIndexPath]; + NSIndexPath* thisIndexPath = arg2; - HBLogDebug(@"firstIndexPath: %ld-%ld thisIndexPath: %ld-%ld", (long)firstIndexPath.section, (long)firstIndexPath.row, (long)thisIndexPath.section, (long)thisIndexPath.row); - if ( firstIndexPath.section == thisIndexPath.section && firstIndexPath.row == thisIndexPath.row){ - - [orig ctrlSelectOverlayView].image = [UIImage imageWithContentsOfFile:@"/var/mobile/Library/Application Support/PhotoCtrl/check.png"]; - - } - } + HBLogDebug(@"firstIndexPath: %ld-%ld thisIndexPath: %ld-%ld", (long)firstIndexPath.section, (long)firstIndexPath.row, (long)thisIndexPath.section, (long)thisIndexPath.row); + if ( firstIndexPath.section == thisIndexPath.section && firstIndexPath.row == thisIndexPath.row){ + + [orig ctrlSelectOverlayView].image = [UIImage imageWithContentsOfFile:@"/var/mobile/Library/Application Support/PhotoCtrl/check.png"]; + + } + } + } } return orig; diff --git a/control b/control index d87299e..baeceac 100644 --- a/control +++ b/control @@ -1,7 +1,7 @@ Package: com.lint.photoctrl Name: PhotoCtrl Depends: mobilesubstrate -Version: 1.0.0 +Version: 1.0.1 Architecture: iphoneos-arm Description: Adds a "ctrl + shift" like function for selecting photos. Maintainer: lint