Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Open sidebar
VideoLAN
VLC-iOS
Commits
b3ac2b75
Commit
b3ac2b75
authored
Oct 03, 2013
by
Felix Paul Kühne
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
VLCPlaylistCollectionViewCell: deploy VLCThumbnailsCache
parent
e493f4ce
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
4 additions
and
44 deletions
+4
-44
AspenProject/VLCPlaylistCollectionViewCell.m
AspenProject/VLCPlaylistCollectionViewCell.m
+4
-44
No files found.
AspenProject/VLCPlaylistCollectionViewCell.m
View file @
b3ac2b75
...
@@ -9,10 +9,8 @@
...
@@ -9,10 +9,8 @@
//
//
#import "VLCPlaylistCollectionViewCell.h"
#import "VLCPlaylistCollectionViewCell.h"
#import "VLCPlaylistViewController.h"
#import "VLCPlaylistViewController.h"
#import "VLCThumbnailsCache.h"
#define MAX_CACHE_SIZE 27 // three times the number of items shown on iPad
@implementation
VLCPlaylistCollectionViewCell
@implementation
VLCPlaylistCollectionViewCell
...
@@ -74,7 +72,7 @@
...
@@ -74,7 +72,7 @@
[
self
configureForMLFile
:
mediaObject
];
[
self
configureForMLFile
:
mediaObject
];
if
(([
keyPath
isEqualToString
:
@"computedThumbnail"
]
||
!
keyPath
)
&&
!
mediaObject
.
isAlbumTrack
)
{
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
]])
{
}
else
if
([
self
.
mediaObject
isKindOfClass
:[
MLAlbum
class
]])
{
MLAlbum
*
mediaObject
=
(
MLAlbum
*
)
self
.
mediaObject
;
MLAlbum
*
mediaObject
=
(
MLAlbum
*
)
self
.
mediaObject
;
...
@@ -90,7 +88,7 @@
...
@@ -90,7 +88,7 @@
if
([
keyPath
isEqualToString
:
@"computedThumbnail"
]
||
!
keyPath
)
{
if
([
keyPath
isEqualToString
:
@"computedThumbnail"
]
||
!
keyPath
)
{
MLFile
*
anyFileFromAnyEpisode
=
[
mediaObject
.
episodes
.
anyObject
files
].
anyObject
;
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
]])
{
}
else
if
([
self
.
mediaObject
isKindOfClass
:[
MLShowEpisode
class
]])
{
MLShowEpisode
*
mediaObject
=
(
MLShowEpisode
*
)
self
.
mediaObject
;
MLShowEpisode
*
mediaObject
=
(
MLShowEpisode
*
)
self
.
mediaObject
;
...
@@ -98,7 +96,7 @@
...
@@ -98,7 +96,7 @@
if
([
keyPath
isEqualToString
:
@"computedThumbnail"
]
||
!
keyPath
)
{
if
([
keyPath
isEqualToString
:
@"computedThumbnail"
]
||
!
keyPath
)
{
MLFile
*
anyFileFromEpisode
=
mediaObject
.
files
.
anyObject
;
MLFile
*
anyFileFromEpisode
=
mediaObject
.
files
.
anyObject
;
self
.
thumbnailView
.
image
=
[
self
thumbnailForMediaFile
:
anyFileFromEpisode
];
self
.
thumbnailView
.
image
=
[
VLCThumbnailsCache
thumbnailForMediaFile
:
anyFileFromEpisode
];
}
}
}
}
...
@@ -216,42 +214,4 @@
...
@@ -216,42 +214,4 @@
self
.
mediaIsUnreadView
.
hidden
=
!
mediaFile
.
unread
.
intValue
;
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
@end
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment