瀏覽代碼

VLCPlaylistCollectionViewCell: deploy VLCThumbnailsCache

Felix Paul Kühne 11 年之前
父節點
當前提交
b3ac2b7539
共有 1 個文件被更改,包括 4 次插入44 次删除
  1. 4 44
      AspenProject/VLCPlaylistCollectionViewCell.m

+ 4 - 44
AspenProject/VLCPlaylistCollectionViewCell.m

@@ -9,10 +9,8 @@
 //
 
 #import "VLCPlaylistCollectionViewCell.h"
-
 #import "VLCPlaylistViewController.h"
-
-#define MAX_CACHE_SIZE 27 // three times the number of items shown on iPad
+#import "VLCThumbnailsCache.h"
 
 @implementation VLCPlaylistCollectionViewCell
 
@@ -74,7 +72,7 @@
         [self configureForMLFile:mediaObject];
 
         if (([keyPath isEqualToString:@"computedThumbnail"] || !keyPath) && !mediaObject.isAlbumTrack) {
-            self.thumbnailView.image = [self thumbnailForMediaFile:mediaObject];
+            self.thumbnailView.image = [VLCThumbnailsCache thumbnailForMediaFile:mediaObject];
         }
     } else if ([self.mediaObject isKindOfClass:[MLAlbum class]]) {
         MLAlbum *mediaObject = (MLAlbum *)self.mediaObject;
@@ -90,7 +88,7 @@
 
         if ([keyPath isEqualToString:@"computedThumbnail"] || !keyPath) {
             MLFile *anyFileFromAnyEpisode = [mediaObject.episodes.anyObject files].anyObject;
-            self.thumbnailView.image = [self thumbnailForMediaFile:anyFileFromAnyEpisode];
+            self.thumbnailView.image = [VLCThumbnailsCache thumbnailForMediaFile:anyFileFromAnyEpisode];
         }
     } else if ([self.mediaObject isKindOfClass:[MLShowEpisode class]]) {
         MLShowEpisode *mediaObject = (MLShowEpisode *)self.mediaObject;
@@ -98,7 +96,7 @@
 
         if ([keyPath isEqualToString:@"computedThumbnail"] || !keyPath) {
             MLFile *anyFileFromEpisode = mediaObject.files.anyObject;
-            self.thumbnailView.image = [self thumbnailForMediaFile:anyFileFromEpisode];
+            self.thumbnailView.image = [VLCThumbnailsCache thumbnailForMediaFile:anyFileFromEpisode];
         }
     }
 
@@ -216,42 +214,4 @@
     self.mediaIsUnreadView.hidden = !mediaFile.unread.intValue;
 }
 
-// Can be extracted outside of VLCPlaylistCollectionViewCell
-- (UIImage *)thumbnailForMediaFile:(MLFile *)mediaFile {
-    if (mediaFile == nil || mediaFile.objectID == nil)
-        return nil;
-
-    static NSMutableArray *_thumbnailCacheIndex;
-    static NSMutableDictionary *_thumbnailCache;
-    if (!_thumbnailCache)
-        _thumbnailCache = [[NSMutableDictionary alloc] initWithCapacity:MAX_CACHE_SIZE];
-    if (!_thumbnailCacheIndex)
-        _thumbnailCacheIndex = [[NSMutableArray alloc] initWithCapacity:MAX_CACHE_SIZE];
-
-    NSManagedObjectID *objID = mediaFile.objectID;
-    UIImage *displayedImage = nil;
-    if ([_thumbnailCacheIndex containsObject:objID]) {
-        [_thumbnailCacheIndex removeObject:objID];
-        [_thumbnailCacheIndex insertObject:objID atIndex:0];
-        displayedImage = [_thumbnailCache objectForKey:objID];
-        if (!displayedImage && mediaFile.computedThumbnail) {
-            displayedImage = mediaFile.computedThumbnail;
-            [_thumbnailCache setObject:displayedImage forKey:objID];
-        }
-    } else {
-        if (_thumbnailCacheIndex.count >= MAX_CACHE_SIZE) {
-            [_thumbnailCache removeObjectForKey:[_thumbnailCacheIndex lastObject]];
-            [_thumbnailCacheIndex removeLastObject];
-        }
-        displayedImage = mediaFile.computedThumbnail;
-
-        if (displayedImage) {
-            [_thumbnailCache setObject:displayedImage forKey:objID];
-            [_thumbnailCacheIndex insertObject:objID atIndex:0];
-        }
-    }
-
-    return displayedImage;
-}
-
 @end