Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Open sidebar
VideoLAN
VLC-iOS
Commits
87a284dd
Commit
87a284dd
authored
Sep 11, 2013
by
Tamas Timar
Committed by
Felix Paul Kühne
Oct 03, 2013
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Use UICollectionView instead of AQGridView, on 6.0 and later
parent
c6baee69
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
993 additions
and
14 deletions
+993
-14
AspenProject/VLCPlaylistCollectionViewCell.h
AspenProject/VLCPlaylistCollectionViewCell.h
+33
-0
AspenProject/VLCPlaylistCollectionViewCell.m
AspenProject/VLCPlaylistCollectionViewCell.m
+257
-0
AspenProject/VLCPlaylistCollectionViewCell.xib
AspenProject/VLCPlaylistCollectionViewCell.xib
+615
-0
AspenProject/VLCPlaylistViewController.m
AspenProject/VLCPlaylistViewController.m
+78
-14
VLC for iOS.xcodeproj/project.pbxproj
VLC for iOS.xcodeproj/project.pbxproj
+10
-0
No files found.
AspenProject/VLCPlaylistCollectionViewCell.h
0 → 100644
View file @
87a284dd
//
// VLCPlaylistCollectionViewCell.h
// VLC for iOS
//
// Created by Tamas Timar on 8/30/13.
// Copyright (c) 2013 VideoLAN. All rights reserved.
//
// Refer to the COPYING file of the official project for license.
//
#import <UIKit/UIKit.h>
#import "VLCLinearProgressIndicator.h"
@interface
VLCPlaylistCollectionViewCell
:
UICollectionViewCell
@property
(
nonatomic
,
strong
)
IBOutlet
UILabel
*
titleLabel
;
@property
(
nonatomic
,
strong
)
IBOutlet
UILabel
*
subtitleLabel
;
@property
(
nonatomic
,
strong
)
IBOutlet
UIImageView
*
thumbnailView
;
@property
(
nonatomic
,
strong
)
IBOutlet
VLCLinearProgressIndicator
*
progressView
;
@property
(
nonatomic
,
strong
)
IBOutlet
UIButton
*
removeMediaButton
;
@property
(
nonatomic
,
strong
)
IBOutlet
UIImageView
*
mediaIsUnreadView
;
@property
(
nonatomic
,
strong
)
IBOutlet
UILabel
*
seriesNameLabel
;
@property
(
nonatomic
,
strong
)
IBOutlet
UILabel
*
artistNameLabel
;
@property
(
nonatomic
,
strong
)
IBOutlet
UILabel
*
albumNameLabel
;
@property
(
nonatomic
,
retain
)
MLFile
*
mediaObject
;
@property
(
nonatomic
,
weak
)
UICollectionView
*
collectionView
;
-
(
void
)
setEditing
:(
BOOL
)
editing
animated
:(
BOOL
)
animated
;
-
(
IBAction
)
removeMedia
:(
id
)
sender
;
@end
AspenProject/VLCPlaylistCollectionViewCell.m
0 → 100644
View file @
87a284dd
//
// VLCPlaylistCollectionViewCell.m
// VLC for iOS
//
// Created by Tamas Timar on 8/30/13.
// Copyright (c) 2013 VideoLAN. All rights reserved.
//
// Refer to the COPYING file of the official project for license.
//
#import "VLCPlaylistCollectionViewCell.h"
#import "VLCPlaylistViewController.h"
#define MAX_CACHE_SIZE 27 // three times the number of items shown on iPad
@implementation
VLCPlaylistCollectionViewCell
-
(
void
)
setEditing
:(
BOOL
)
editing
animated
:(
BOOL
)
animated
{
self
.
removeMediaButton
.
hidden
=
!
editing
;
[
self
_updatedDisplayedInformationForKeyPath
:
@"editing"
];
}
-
(
void
)
observeValueForKeyPath
:(
NSString
*
)
keyPath
ofObject
:(
id
)
object
change
:(
NSDictionary
*
)
change
context
:(
void
*
)
context
{
[
self
_updatedDisplayedInformationForKeyPath
:
keyPath
];
}
-
(
void
)
setMediaObject
:(
MLFile
*
)
mediaObject
{
if
(
_mediaObject
!=
mediaObject
)
{
[
_mediaObject
removeObserver
:
self
forKeyPath
:
@"computedThumbnail"
];
[
_mediaObject
removeObserver
:
self
forKeyPath
:
@"lastPosition"
];
[
_mediaObject
removeObserver
:
self
forKeyPath
:
@"duration"
];
[
_mediaObject
removeObserver
:
self
forKeyPath
:
@"fileSizeInBytes"
];
[
_mediaObject
removeObserver
:
self
forKeyPath
:
@"title"
];
[
_mediaObject
removeObserver
:
self
forKeyPath
:
@"thumbnailTimeouted"
];
[
_mediaObject
removeObserver
:
self
forKeyPath
:
@"unread"
];
[
_mediaObject
removeObserver
:
self
forKeyPath
:
@"albumTrackNumber"
];
[
_mediaObject
removeObserver
:
self
forKeyPath
:
@"album"
];
[
_mediaObject
removeObserver
:
self
forKeyPath
:
@"artist"
];
[
_mediaObject
removeObserver
:
self
forKeyPath
:
@"genre"
];
if
([
_mediaObject
respondsToSelector
:
@selector
(
didHide
)])
[(
MLFile
*
)
_mediaObject
didHide
];
_mediaObject
=
mediaObject
;
[
_mediaObject
addObserver
:
self
forKeyPath
:
@"computedThumbnail"
options
:
0
context
:
nil
];
[
_mediaObject
addObserver
:
self
forKeyPath
:
@"lastPosition"
options
:
0
context
:
nil
];
[
_mediaObject
addObserver
:
self
forKeyPath
:
@"duration"
options
:
0
context
:
nil
];
[
_mediaObject
addObserver
:
self
forKeyPath
:
@"fileSizeInBytes"
options
:
0
context
:
nil
];
[
_mediaObject
addObserver
:
self
forKeyPath
:
@"title"
options
:
0
context
:
nil
];
[
_mediaObject
addObserver
:
self
forKeyPath
:
@"thumbnailTimeouted"
options
:
0
context
:
nil
];
[
_mediaObject
addObserver
:
self
forKeyPath
:
@"unread"
options
:
0
context
:
nil
];
[
_mediaObject
addObserver
:
self
forKeyPath
:
@"albumTrackNumber"
options
:
0
context
:
nil
];
[
_mediaObject
addObserver
:
self
forKeyPath
:
@"album"
options
:
0
context
:
nil
];
[
_mediaObject
addObserver
:
self
forKeyPath
:
@"artist"
options
:
0
context
:
nil
];
[
_mediaObject
addObserver
:
self
forKeyPath
:
@"genre"
options
:
0
context
:
nil
];
if
([
_mediaObject
respondsToSelector
:
@selector
(
willDisplay
)])
[(
MLFile
*
)
_mediaObject
willDisplay
];
}
[
self
_updatedDisplayedInformationForKeyPath
:
nil
];
}
-
(
void
)
_updatedDisplayedInformationForKeyPath
:(
NSString
*
)
keyPath
{
self
.
albumNameLabel
.
text
=
self
.
artistNameLabel
.
text
=
self
.
seriesNameLabel
.
text
=
@""
;
if
([
self
.
mediaObject
isKindOfClass
:[
MLFile
class
]])
{
MLFile
*
mediaObject
=
self
.
mediaObject
;
[
self
configureForMLFile
:
mediaObject
];
if
(([
keyPath
isEqualToString
:
@"computedThumbnail"
]
||
!
keyPath
)
&&
!
mediaObject
.
isAlbumTrack
)
{
self
.
thumbnailView
.
image
=
[
self
thumbnailForMediaFile
:
mediaObject
];
}
}
else
if
([
self
.
mediaObject
isKindOfClass
:[
MLAlbum
class
]])
{
MLAlbum
*
mediaObject
=
(
MLAlbum
*
)
self
.
mediaObject
;
[
self
configureForAlbum
:
mediaObject
];
}
else
if
([
self
.
mediaObject
isKindOfClass
:[
MLAlbumTrack
class
]])
{
MLAlbumTrack
*
mediaObject
=
(
MLAlbumTrack
*
)
self
.
mediaObject
;
[
self
configureForAlbumTrack
:
mediaObject
];
}
else
if
([
self
.
mediaObject
isKindOfClass
:[
MLShow
class
]])
{
MLShow
*
mediaObject
=
(
MLShow
*
)
self
.
mediaObject
;
[
self
configureForShow
:
mediaObject
];
if
([
keyPath
isEqualToString
:
@"computedThumbnail"
]
||
!
keyPath
)
{
MLFile
*
anyFileFromAnyEpisode
=
[
mediaObject
.
episodes
.
anyObject
files
].
anyObject
;
self
.
thumbnailView
.
image
=
[
self
thumbnailForMediaFile
:
anyFileFromAnyEpisode
];
}
}
else
if
([
self
.
mediaObject
isKindOfClass
:[
MLShowEpisode
class
]])
{
MLShowEpisode
*
mediaObject
=
(
MLShowEpisode
*
)
self
.
mediaObject
;
[
self
configureForShowEpisode
:
mediaObject
];
if
([
keyPath
isEqualToString
:
@"computedThumbnail"
]
||
!
keyPath
)
{
MLFile
*
anyFileFromEpisode
=
mediaObject
.
files
.
anyObject
;
self
.
thumbnailView
.
image
=
[
self
thumbnailForMediaFile
:
anyFileFromEpisode
];
}
}
[
self
setNeedsDisplay
];
}
-
(
IBAction
)
removeMedia
:(
id
)
sender
{
/* ask user if s/he really wants to delete the media file */
UIAlertView
*
alert
=
[[
UIAlertView
alloc
]
initWithTitle
:
NSLocalizedString
(
@"DELETE_FILE"
,
@""
)
message
:[
NSString
stringWithFormat
:
NSLocalizedString
(
@"DELETE_FILE_LONG"
,
@""
),
self
.
mediaObject
.
title
]
delegate
:
self
cancelButtonTitle
:
NSLocalizedString
(
@"BUTTON_CANCEL"
,
@""
)
otherButtonTitles
:
NSLocalizedString
(
@"BUTTON_DELETE"
,
@""
),
nil
];
[
alert
show
];
}
-
(
void
)
alertView
:(
UIAlertView
*
)
alertView
clickedButtonAtIndex
:(
NSInteger
)
buttonIndex
{
if
(
buttonIndex
==
1
)
{
VLCPlaylistViewController
*
delegate
=
(
VLCPlaylistViewController
*
)
self
.
collectionView
.
delegate
;
[
delegate
removeMediaObject
:
self
.
mediaObject
];
}
}
#pragma mark - presentation
-
(
void
)
configureForShow
:(
MLShow
*
)
show
{
self
.
titleLabel
.
text
=
show
.
name
;
self
.
artistNameLabel
.
text
=
@""
;
self
.
albumNameLabel
.
text
=
show
.
releaseYear
;
NSUInteger
count
=
show
.
episodes
.
count
;
self
.
subtitleLabel
.
text
=
[
NSString
stringWithFormat
:(
count
>
1
)
?
NSLocalizedString
(
@"LIBRARY_EPISODES"
,
@""
)
:
NSLocalizedString
(
@"LIBRARY_SINGLE_EPISODE"
,
@""
),
count
,
show
.
unreadEpisodes
.
count
];
self
.
mediaIsUnreadView
.
hidden
=
YES
;
self
.
progressView
.
hidden
=
YES
;
}
-
(
void
)
configureForAlbumTrack
:(
MLAlbumTrack
*
)
albumTrack
{
self
.
artistNameLabel
.
text
=
albumTrack
.
artist
;
self
.
albumNameLabel
.
text
=
[
NSString
stringWithFormat
:
NSLocalizedString
(
@"LIBRARY_SINGLE_TRACK"
,
@""
),
albumTrack
.
trackNumber
.
intValue
];
self
.
titleLabel
.
text
=
albumTrack
.
title
;
self
.
thumbnailView
.
image
=
nil
;
MLFile
*
anyFileFromTrack
=
albumTrack
.
files
.
anyObject
;
self
.
subtitleLabel
.
text
=
[
NSString
stringWithFormat
:
@"%@"
,
[
VLCTime
timeWithNumber
:[
anyFileFromTrack
duration
]]];
CGFloat
position
=
anyFileFromTrack
.
lastPosition
.
floatValue
;
self
.
progressView
.
progress
=
position
;
self
.
progressView
.
hidden
=
((
position
<
.
1
f
)
||
(
position
>
.
95
f
))
?
YES
:
NO
;
[
self
.
progressView
setNeedsDisplay
];
self
.
mediaIsUnreadView
.
hidden
=
!
anyFileFromTrack
.
unread
.
intValue
;
}
-
(
void
)
configureForAlbum
:(
MLAlbum
*
)
album
{
self
.
titleLabel
.
text
=
album
.
name
;
MLAlbumTrack
*
anyTrack
=
[
album
.
tracks
anyObject
];
self
.
artistNameLabel
.
text
=
anyTrack
?
anyTrack
.
artist
:
@""
;
self
.
albumNameLabel
.
text
=
album
.
releaseYear
;
self
.
thumbnailView
.
image
=
nil
;
NSUInteger
count
=
album
.
tracks
.
count
;
self
.
subtitleLabel
.
text
=
[
NSString
stringWithFormat
:(
count
>
1
)
?
NSLocalizedString
(
@"LIBRARY_TRACKS"
,
@""
)
:
NSLocalizedString
(
@"LIBRARY_SINGLE_TRACK"
,
@""
),
count
];
self
.
mediaIsUnreadView
.
hidden
=
YES
;
self
.
progressView
.
hidden
=
YES
;
}
-
(
void
)
configureForShowEpisode
:(
MLShowEpisode
*
)
showEpisode
{
MLFile
*
anyFileFromEpisode
=
showEpisode
.
files
.
anyObject
;
self
.
titleLabel
.
text
=
showEpisode
.
name
;
if
(
self
.
titleLabel
.
text
.
length
<
1
)
{
self
.
titleLabel
.
text
=
[
NSString
stringWithFormat
:
@"S%02dE%02d"
,
showEpisode
.
episodeNumber
.
intValue
,
showEpisode
.
seasonNumber
.
intValue
];
self
.
subtitleLabel
.
text
=
[
NSString
stringWithFormat
:
@"%@"
,
[
VLCTime
timeWithNumber
:[
anyFileFromEpisode
duration
]]];
}
else
self
.
subtitleLabel
.
text
=
[
NSString
stringWithFormat
:
@"S%02dE%02d — %@"
,
showEpisode
.
episodeNumber
.
intValue
,
showEpisode
.
seasonNumber
.
intValue
,
[
VLCTime
timeWithNumber
:[
anyFileFromEpisode
duration
]]];
CGFloat
position
=
anyFileFromEpisode
.
lastPosition
.
floatValue
;
self
.
progressView
.
progress
=
position
;
self
.
progressView
.
hidden
=
((
position
<
.
1
f
)
||
(
position
>
.
95
f
))
?
YES
:
NO
;
[
self
.
progressView
setNeedsDisplay
];
self
.
mediaIsUnreadView
.
hidden
=
!
showEpisode
.
unread
.
intValue
;
}
-
(
void
)
configureForMLFile
:(
MLFile
*
)
mediaFile
{
if
([
mediaFile
isAlbumTrack
])
{
self
.
artistNameLabel
.
text
=
mediaFile
.
albumTrack
.
artist
;
self
.
albumNameLabel
.
text
=
mediaFile
.
albumTrack
.
album
.
name
;
self
.
titleLabel
.
text
=
(
mediaFile
.
albumTrack
.
title
.
length
>
0
)
?
mediaFile
.
albumTrack
.
title
:
mediaFile
.
title
;
self
.
thumbnailView
.
image
=
nil
;
}
else
if
([
mediaFile
isShowEpisode
])
{
MLShowEpisode
*
episode
=
mediaFile
.
showEpisode
;
self
.
seriesNameLabel
.
text
=
episode
.
show
.
name
;
self
.
titleLabel
.
text
=
(
episode
.
name
.
length
>
0
)
?
[
NSString
stringWithFormat
:
@"%@ - S%02dE%02d"
,
episode
.
name
,
mediaFile
.
showEpisode
.
seasonNumber
.
intValue
,
episode
.
episodeNumber
.
intValue
]
:
[
NSString
stringWithFormat
:
@"S%02dE%02d"
,
episode
.
seasonNumber
.
intValue
,
episode
.
episodeNumber
.
intValue
];
}
else
self
.
titleLabel
.
text
=
mediaFile
.
title
;
VLCPlaylistViewController
*
delegate
=
(
VLCPlaylistViewController
*
)
self
.
collectionView
.
delegate
;
if
(
delegate
.
isEditing
)
self
.
subtitleLabel
.
text
=
[
NSString
stringWithFormat
:
@"%@ — %i MB"
,
[
VLCTime
timeWithNumber
:[
mediaFile
duration
]],
(
int
)([
mediaFile
fileSizeInBytes
]
/
1e6
)];
else
{
self
.
subtitleLabel
.
text
=
[
NSString
stringWithFormat
:
@"%@"
,
[
VLCTime
timeWithNumber
:[
mediaFile
duration
]]];
if
(
mediaFile
.
videoTrack
)
{
NSString
*
width
=
[[
mediaFile
videoTrack
]
valueForKey
:
@"width"
];
NSString
*
height
=
[[
mediaFile
videoTrack
]
valueForKey
:
@"height"
];
if
(
width
.
intValue
>
0
&&
height
.
intValue
>
0
)
self
.
subtitleLabel
.
text
=
[
self
.
subtitleLabel
.
text
stringByAppendingFormat
:
@" — %@x%@"
,
width
,
height
];
}
}
CGFloat
position
=
mediaFile
.
lastPosition
.
floatValue
;
self
.
progressView
.
progress
=
position
;
self
.
progressView
.
hidden
=
((
position
<
.
1
f
)
||
(
position
>
.
95
f
))
?
YES
:
NO
;
[
self
.
progressView
setNeedsDisplay
];
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
AspenProject/VLCPlaylistCollectionViewCell.xib
0 → 100644
View file @
87a284dd
<?xml version="1.0" encoding="UTF-8"?>
<archive
type=
"com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB"
version=
"8.00"
>
<data>
<int
key=
"IBDocument.SystemTarget"
>
1552
</int>
<string
key=
"IBDocument.SystemVersion"
>
12E55
</string>
<string
key=
"IBDocument.InterfaceBuilderVersion"
>
3084
</string>
<string
key=
"IBDocument.AppKitVersion"
>
1187.39
</string>
<string
key=
"IBDocument.HIToolboxVersion"
>
626.00
</string>
<object
class=
"NSMutableDictionary"
key=
"IBDocument.PluginVersions"
>
<string
key=
"NS.key.0"
>
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
</string>
<string
key=
"NS.object.0"
>
2083
</string>
</object>
<array
key=
"IBDocument.IntegratedClassDependencies"
>
<string>
IBProxyObject
</string>
<string>
IBUIButton
</string>
<string>
IBUICollectionViewCell
</string>
<string>
IBUIImageView
</string>
<string>
IBUILabel
</string>
<string>
IBUIView
</string>
</array>
<array
key=
"IBDocument.PluginDependencies"
>
<string>
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
</string>
</array>
<object
class=
"NSMutableDictionary"
key=
"IBDocument.Metadata"
>
<string
key=
"NS.key.0"
>
PluginDependencyRecalculationVersion
</string>
<integer
value=
"1"
key=
"NS.object.0"
/>
</object>
<array
class=
"NSMutableArray"
key=
"IBDocument.RootObjects"
id=
"1000"
>
<object
class=
"IBProxyObject"
id=
"841351856"
>
<string
key=
"IBProxiedObjectIdentifier"
>
IBFilesOwner
</string>
<string
key=
"targetRuntimeIdentifier"
>
IBIPadFramework
</string>
</object>
<object
class=
"IBProxyObject"
id=
"371349661"
>
<string
key=
"IBProxiedObjectIdentifier"
>
IBFirstResponder
</string>
<string
key=
"targetRuntimeIdentifier"
>
IBIPadFramework
</string>
</object>
<object
class=
"IBUICollectionViewCell"
id=
"541525164"
>
<reference
key=
"NSNextResponder"
/>
<int
key=
"NSvFlags"
>
268
</int>
<array
class=
"NSMutableArray"
key=
"NSSubviews"
>
<object
class=
"IBUIView"
id=
"343928585"
>
<reference
key=
"NSNextResponder"
ref=
"541525164"
/>
<int
key=
"NSvFlags"
>
256
</int>
<array
class=
"NSMutableArray"
key=
"NSSubviews"
>
<object
class=
"IBUILabel"
id=
"457142782"
>
<reference
key=
"NSNextResponder"
ref=
"343928585"
/>
<int
key=
"NSvFlags"
>
264
</int>
<string
key=
"NSFrame"
>
{{19, 76}, {257, 20}}
</string>
<reference
key=
"NSSuperview"
ref=
"343928585"
/>
<reference
key=
"NSWindow"
/>
<reference
key=
"NSNextKeyView"
ref=
"405891686"
/>
<string
key=
"NSReuseIdentifierKey"
>
_NS:9
</string>
<bool
key=
"IBUIOpaque"
>
NO
</bool>
<bool
key=
"IBUIClipsSubviews"
>
YES
</bool>
<int
key=
"IBUIContentMode"
>
1
</int>
<bool
key=
"IBUIUserInteractionEnabled"
>
NO
</bool>
<string
key=
"targetRuntimeIdentifier"
>
IBIPadFramework
</string>
<string
key=
"IBUIText"
>
Artist Name
</string>
<object
class=
"NSColor"
key=
"IBUITextColor"
id=
"429073164"
>
<int
key=
"NSColorSpace"
>
3
</int>
<bytes
key=
"NSWhite"
>
MQA
</bytes>
</object>
<nil
key=
"IBUIHighlightedColor"
/>
<object
class=
"NSColor"
key=
"IBUIShadowColor"
id=
"453573140"
>
<int
key=
"NSColorSpace"
>
1
</int>
<bytes
key=
"NSRGB"
>
MCAwIDAAA
</bytes>
<string
key=
"IBUIColorCocoaTouchKeyPath"
>
darkTextColor
</string>
</object>
<int
key=
"IBUIBaselineAdjustment"
>
0
</int>
<float
key=
"IBUIMinimumFontSize"
>
12
</float>
<bool
key=
"IBUIAdjustsLetterSpacingToFitWidth"
>
YES
</bool>
<int
key=
"IBUITextAlignment"
>
1
</int>
<object
class=
"IBUIFontDescription"
key=
"IBUIFontDescription"
id=
"290339558"
>
<int
key=
"type"
>
1
</int>
<double
key=
"pointSize"
>
18
</double>
</object>
<object
class=
"NSFont"
key=
"IBUIFont"
id=
"154316482"
>
<string
key=
"NSName"
>
Helvetica
</string>
<double
key=
"NSSize"
>
18
</double>
<int
key=
"NSfFlags"
>
16
</int>
</object>
</object>
<object
class=
"IBUILabel"
id=
"405891686"
>
<reference
key=
"NSNextResponder"
ref=
"343928585"
/>
<int
key=
"NSvFlags"
>
264
</int>
<string
key=
"NSFrame"
>
{{20, 96}, {258, 28}}
</string>
<reference
key=
"NSSuperview"
ref=
"343928585"
/>
<reference
key=
"NSWindow"
/>
<reference
key=
"NSNextKeyView"
ref=
"99927648"
/>
<string
key=
"NSReuseIdentifierKey"
>
_NS:9
</string>
<bool
key=
"IBUIOpaque"
>
NO
</bool>
<bool
key=
"IBUIClipsSubviews"
>
YES
</bool>
<int
key=
"IBUIContentMode"
>
7
</int>
<bool
key=
"IBUIUserInteractionEnabled"
>
NO
</bool>
<string
key=
"targetRuntimeIdentifier"
>
IBIPadFramework
</string>
<string
key=
"IBUIText"
>
Album Name
</string>
<object
class=
"NSColor"
key=
"IBUITextColor"
>
<int
key=
"NSColorSpace"
>
3
</int>
<bytes
key=
"NSWhite"
>
MC43MgA
</bytes>
</object>
<nil
key=
"IBUIHighlightedColor"
/>
<reference
key=
"IBUIShadowColor"
ref=
"453573140"
/>
<int
key=
"IBUIBaselineAdjustment"
>
0
</int>
<float
key=
"IBUIMinimumFontSize"
>
10
</float>
<bool
key=
"IBUIAdjustsLetterSpacingToFitWidth"
>
YES
</bool>
<int
key=
"IBUITextAlignment"
>
1
</int>
<object
class=
"IBUIFontDescription"
key=
"IBUIFontDescription"
id=
"106500751"
>
<int
key=
"type"
>
1
</int>
<double
key=
"pointSize"
>
14
</double>
</object>
<object
class=
"NSFont"
key=
"IBUIFont"
id=
"939746159"
>
<string
key=
"NSName"
>
Helvetica
</string>
<double
key=
"NSSize"
>
14
</double>
<int
key=
"NSfFlags"
>
16
</int>
</object>
</object>
<object
class=
"IBUIImageView"
id=
"99927648"
>
<reference
key=
"NSNextResponder"
ref=
"343928585"
/>
<int
key=
"NSvFlags"
>
274
</int>
<string
key=
"NSFrame"
>
{{21, 14}, {256, 144}}
</string>
<reference
key=
"NSSuperview"
ref=
"343928585"
/>
<reference
key=
"NSWindow"
/>
<reference
key=
"NSNextKeyView"
ref=
"501792178"
/>
<string
key=
"NSReuseIdentifierKey"
>
_NS:9
</string>
<bool
key=
"IBUIUserInteractionEnabled"
>
NO
</bool>
<string
key=
"targetRuntimeIdentifier"
>
IBIPadFramework
</string>
</object>
<object
class=
"IBUILabel"
id=
"634412904"
>
<reference
key=
"NSNextResponder"
ref=
"343928585"
/>
<int
key=
"NSvFlags"
>
264
</int>
<string
key=
"NSFrame"
>
{{20, 167}, {258, 21}}
</string>
<reference
key=
"NSSuperview"
ref=
"343928585"
/>
<reference
key=
"NSWindow"
/>
<reference
key=
"NSNextKeyView"
ref=
"288639132"
/>
<string
key=
"NSReuseIdentifierKey"
>
_NS:9
</string>
<bool
key=
"IBUIOpaque"
>
NO
</bool>
<bool
key=
"IBUIClipsSubviews"
>
YES
</bool>
<int
key=
"IBUIContentMode"
>
1
</int>
<bool
key=
"IBUIUserInteractionEnabled"
>
NO
</bool>
<string
key=
"targetRuntimeIdentifier"
>
IBIPadFramework
</string>
<string
key=
"IBUIText"
>
Label
</string>
<reference
key=
"IBUITextColor"
ref=
"429073164"
/>
<nil
key=
"IBUIHighlightedColor"
/>
<reference
key=
"IBUIShadowColor"
ref=
"453573140"
/>
<int
key=
"IBUIBaselineAdjustment"
>
0
</int>
<float
key=
"IBUIMinimumFontSize"
>
9
</float>
<bool
key=
"IBUIAdjustsLetterSpacingToFitWidth"
>
YES
</bool>
<int
key=
"IBUITextAlignment"
>
1
</int>
<reference
key=
"IBUIFontDescription"
ref=
"290339558"
/>
<reference
key=
"IBUIFont"
ref=
"154316482"
/>
</object>
<object
class=
"IBUILabel"
id=
"288639132"
>
<reference
key=
"NSNextResponder"
ref=
"343928585"
/>
<int
key=
"NSvFlags"
>
264
</int>
<string
key=
"NSFrame"
>
{{20, 190}, {258, 28}}
</string>
<reference
key=
"NSSuperview"
ref=
"343928585"
/>
<reference
key=
"NSWindow"
/>
<reference
key=
"NSNextKeyView"
/>
<string
key=
"NSReuseIdentifierKey"
>
_NS:9
</string>
<bool
key=
"IBUIOpaque"
>
NO
</bool>
<bool
key=
"IBUIClipsSubviews"
>
YES
</bool>
<int
key=
"IBUIContentMode"
>
7
</int>
<bool
key=
"IBUIUserInteractionEnabled"
>
NO
</bool>
<string
key=
"targetRuntimeIdentifier"
>
IBIPadFramework
</string>
<string
key=
"IBUIText"
>
Subtitle
</string>
<object
class=
"NSColor"
key=
"IBUITextColor"
>
<int
key=
"NSColorSpace"
>
3
</int>
<bytes
key=
"NSWhite"
>
MC43MgA
</bytes>
</object>
<nil
key=
"IBUIHighlightedColor"
/>
<reference
key=
"IBUIShadowColor"
ref=
"453573140"
/>
<int
key=
"IBUIBaselineAdjustment"
>
0
</int>
<int
key=
"IBUITextAlignment"
>
1
</int>
<reference
key=
"IBUIFontDescription"
ref=
"106500751"
/>
<reference
key=
"IBUIFont"
ref=
"939746159"
/>
<bool
key=
"IBUIAdjustsFontSizeToFit"
>
NO
</bool>
</object>
<object
class=
"IBUILabel"
id=
"22663525"
>
<reference
key=
"NSNextResponder"
ref=
"343928585"
/>
<int
key=
"NSvFlags"
>
264
</int>
<string
key=
"NSFrame"
>
{{27, 12}, {230, 28}}
</string>
<reference
key=
"NSSuperview"
ref=
"343928585"
/>
<reference
key=
"NSWindow"
/>
<reference
key=
"NSNextKeyView"
ref=
"699596644"
/>
<string
key=
"NSReuseIdentifierKey"
>
_NS:9
</string>
<bool
key=
"IBUIOpaque"
>
NO
</bool>
<bool
key=
"IBUIClipsSubviews"
>
YES
</bool>
<int
key=
"IBUIContentMode"
>
7
</int>
<bool
key=
"IBUIUserInteractionEnabled"
>
NO
</bool>
<string
key=
"targetRuntimeIdentifier"
>
IBIPadFramework
</string>
<string
key=
"IBUIText"
>
Series Name
</string>
<object
class=
"NSColor"
key=
"IBUITextColor"
>
<int
key=
"NSColorSpace"
>
3
</int>
<bytes
key=
"NSWhite"
>
MC43MgA
</bytes>
</object>
<nil
key=
"IBUIHighlightedColor"
/>
<reference
key=
"IBUIShadowColor"
ref=
"453573140"
/>
<string
key=
"IBUIShadowOffset"
>
{0, 1}
</string>
<int
key=
"IBUIBaselineAdjustment"
>
0
</int>
<float
key=
"IBUIMinimumFontSize"
>
9
</float>
<bool
key=
"IBUIAdjustsLetterSpacingToFitWidth"
>
YES
</bool>
<reference
key=
"IBUIFontDescription"
ref=
"106500751"
/>
<reference
key=
"IBUIFont"
ref=
"939746159"
/>
</object>
<object
class=
"IBUIView"
id=
"501792178"
>
<reference
key=
"NSNextResponder"
ref=
"343928585"
/>
<int
key=
"NSvFlags"
>
292
</int>
<string
key=
"NSFrame"
>
{{21, 146}, {256, 12}}
</string>
<reference
key=
"NSSuperview"
ref=
"343928585"
/>
<reference
key=
"NSWindow"
/>
<reference
key=
"NSNextKeyView"
ref=
"634412904"
/>
<string
key=
"NSReuseIdentifierKey"
>
_NS:9
</string>
<object
class=
"NSColor"
key=
"IBUIBackgroundColor"
id=
"476951524"
>
<int
key=
"NSColorSpace"
>
3
</int>
<bytes
key=
"NSWhite"
>
MCAwAA
</bytes>
</object>
<string
key=
"targetRuntimeIdentifier"
>
IBIPadFramework
</string>
</object>
<object
class=
"IBUIImageView"
id=
"130196590"
>
<reference
key=
"NSNextResponder"
ref=
"343928585"
/>
<int
key=
"NSvFlags"
>
274
</int>
<string
key=
"NSFrame"
>
{{16, 9}, {266, 154}}
</string>
<reference
key=
"NSSuperview"
ref=
"343928585"
/>
<reference
key=
"NSWindow"
/>
<reference
key=
"NSNextKeyView"
ref=
"22663525"
/>
<string
key=
"NSReuseIdentifierKey"
>
_NS:9
</string>
<bool
key=
"IBUIUserInteractionEnabled"
>
NO
</bool>
<string
key=
"targetRuntimeIdentifier"
>
IBIPadFramework
</string>
<object
class=
"NSCustomResource"
key=
"IBUIImage"
>
<string
key=
"NSClassName"
>
NSImage
</string>
<string
key=
"NSResourceName"
>
thumbOverlay.png
</string>
</object>
</object>
<object
class=
"IBUIButton"
id=
"657061410"
>
<reference
key=
"NSNextResponder"
ref=
"343928585"
/>
<int
key=
"NSvFlags"
>
-2147483356
</int>
<string
key=
"NSFrame"
>
{{260, 2}, {33, 29}}
</string>
<reference
key=
"NSSuperview"
ref=
"343928585"
/>
<reference
key=
"NSWindow"
/>
<reference
key=
"NSNextKeyView"
ref=
"457142782"
/>
<string
key=
"NSReuseIdentifierKey"
>
_NS:9
</string>
<bool
key=
"IBUIOpaque"
>
NO
</bool>
<string
key=
"targetRuntimeIdentifier"
>
IBIPadFramework
</string>
<int
key=
"IBUIContentHorizontalAlignment"
>
0
</int>
<int
key=
"IBUIContentVerticalAlignment"
>
0
</int>
<reference
key=
"IBUIHighlightedTitleColor"
ref=
"429073164"
/>
<object
class=
"NSColor"
key=
"IBUINormalTitleColor"
>
<int
key=
"NSColorSpace"
>
1
</int>
<bytes
key=
"NSRGB"
>
MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA
</bytes>
</object>
<object
class=
"NSColor"
key=
"IBUINormalTitleShadowColor"
>
<int
key=
"NSColorSpace"
>
3
</int>
<bytes
key=
"NSWhite"
>
MC41AA
</bytes>
</object>
<object
class=
"NSCustomResource"
key=
"IBUINormalImage"
>
<string
key=
"NSClassName"
>
NSImage
</string>
<string
key=
"NSResourceName"
>
DeleteButton.png
</string>
</object>
<object
class=
"IBUIFontDescription"
key=
"IBUIFontDescription"
>
<int
key=
"type"
>
2
</int>
<int
key=
"size"
>
2
</int>
</object>
<object
class=
"NSFont"
key=
"IBUIFont"
>
<string
key=
"NSName"
>
Helvetica-Bold
</string>
<double
key=
"NSSize"
>
18
</double>
<int
key=
"NSfFlags"
>
16
</int>
</object>
</object>
<object
class=
"IBUIImageView"
id=
"699596644"
>
<reference
key=
"NSNextResponder"
ref=
"343928585"
/>
<int
key=
"NSvFlags"
>
297
</int>
<string
key=
"NSFrame"
>
{{235, 12}, {44, 44}}
</string>
<reference
key=
"NSSuperview"
ref=
"343928585"
/>
<reference
key=
"NSWindow"
/>
<reference
key=
"NSNextKeyView"
ref=
"657061410"
/>
<string
key=
"NSReuseIdentifierKey"
>
_NS:9
</string>
<bool
key=
"IBUIUserInteractionEnabled"
>
NO
</bool>
<string
key=
"targetRuntimeIdentifier"
>
IBIPadFramework
</string>
<object
class=
"NSCustomResource"
key=
"IBUIImage"
>
<string
key=
"NSClassName"
>
NSImage
</string>
<string
key=
"NSResourceName"
>
badgeUnread~ipad.png
</string>
</object>
</object>
</array>
<string
key=
"NSFrameSize"
>
{298, 220}
</string>
<reference
key=
"NSSuperview"
ref=
"541525164"
/>
<reference
key=
"NSWindow"
/>