Skip to content

Commit e710df2

Browse files
committed
Searialize using NSCoding (Step 1)
1 parent f7ecab7 commit e710df2

12 files changed

Lines changed: 337 additions & 187 deletions

src/PlayerDocument+ScreenSaver.m

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
//
2+
// PlayerDocument_ScreenSaver.m
3+
// uPlayer
4+
//
5+
// Created by liaogang on 16/3/28.
6+
// Copyright © 2016年 liaogang. All rights reserved.
7+
//
8+
9+
#import "PlayerDocument+ScreenSaver.h"
10+
11+
@implementation PlayerDocument (ScreenSaver)
12+
13+
-(void)monitorScreenSaverEvent
14+
{
15+
16+
[[NSDistributedNotificationCenter defaultCenter]
17+
addObserver:self
18+
selector:@selector(screensaverStarted:)
19+
name:@"com.apple.screensaver.didstart"
20+
object:nil];
21+
22+
[[NSDistributedNotificationCenter defaultCenter]
23+
addObserver:self
24+
selector:@selector(screensaverStopped:)
25+
name:@"com.apple.screensaver.didstop"
26+
object:nil];
27+
}
28+
29+
-(void)screensaverStarted:(NSNotification*)n
30+
{
31+
self.screenSaverRunning = TRUE;
32+
}
33+
34+
-(void)screensaverStopped:(NSNotification*)n
35+
{
36+
self.screenSaverRunning = FALSE;
37+
}
38+
39+
@end

src/PlayerDocument.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414

1515
@interface PlayerDocument : NSObject
1616

17+
+(NSString*)filePathForSearialize;
18+
1719
/// value need to searialize.
1820
@property (nonatomic) int resumeAtReboot;
1921
@property (nonatomic) int trackSongsWhenPlayStarted; //track song when playing changed autoly.
@@ -43,6 +45,8 @@ stopScrobblingWhenScreenSaverRunning;
4345

4446
-(BOOL)shouldScrobbleToLastFm;
4547

48+
-(void)resetProperty;
49+
4650
@end
4751

4852

src/PlayerDocument.mm

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,29 +11,41 @@
1111
#import <Foundation/Foundation.h>
1212
#import "serialize.h"
1313
#include "PlayerDocument+ScreenSaver.h"
14+
#include "ThreadJob.h"
1415

1516
@interface PlayerDocument ()
1617

1718
@end
1819

1920
@implementation PlayerDocument
2021

22+
+(NSString*)filePathForSearialize
23+
{
24+
return [ApplicationSupportDirectory() stringByAppendingPathComponent: @"config.plist" ];
25+
}
26+
27+
-(void)resetProperty
28+
{
29+
self.windowName = NSLocalizedString(@"Smine windows name", nil);
30+
self.playerlList = [[PlayerlList alloc]init];
31+
self.resumeAtReboot = TRUE;
32+
self.playTime = -1;
33+
self.trackSongsWhenPlayStarted = FALSE;
34+
self.lastFmEnabled = FALSE;
35+
self.stopScrobblingWhenScreenSaverRunning = TRUE;
36+
self.volume = 1.0;
37+
self.playerQueue=[[PlayerQueue alloc]init];
38+
self.playingIndexList = -1;
39+
self.playingIndexTrack = -1;
40+
}
41+
2142
-(instancetype)init
2243
{
2344
self = [super init];
2445
if (self)
2546
{
26-
self.windowName = NSLocalizedString(@"Smine windows name", nil);
27-
self.playerlList = [[PlayerlList alloc]init];
28-
self.resumeAtReboot = TRUE;
29-
self.playTime = -1;
30-
self.trackSongsWhenPlayStarted = FALSE;
31-
self.lastFmEnabled = FALSE;
32-
self.stopScrobblingWhenScreenSaverRunning = TRUE;
33-
self.volume = 1.0;
34-
self.playerQueue=[[PlayerQueue alloc]init];
35-
self.playingIndexList = -1;
36-
self.playingIndexTrack = -1;
47+
48+
[self resetProperty];
3749

3850
#ifdef PlayerDocument_ScreenSaver
3951
[self monitorScreenSaverEvent];

src/PlayerImpl.mm

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,8 @@ -(void)willSave
166166

167167
-(void)didLoad
168168
{
169-
self.selectItem = [self getItem: self.selectIndex];
169+
if( self.selectIndex != -1)
170+
self.selectItem = [self getItem: self.selectIndex];
170171
}
171172

172173
@end

src/PlayerList.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414
@class PlayerlList;
1515

1616

17-
@interface PlayerList: NSObject
17+
@interface PlayerList: NSObject <NSCoding>
18+
1819
@property (nonatomic,strong) NSString *name;
1920
@property (nonatomic) int selectIndex,topIndex;
2021
@property (nonatomic,strong) NSMutableArray *playerTrackList;//class PlayerTrack
@@ -25,6 +26,8 @@
2526
-(instancetype)initWithOwner:(PlayerlList*)llist;
2627
@property (nonatomic) PlayerlList *llist;
2728
-(void)markSelected;
29+
-(int)indexInParent;
30+
2831

2932

3033
-(PlayerTrack*)getItem:(NSInteger)index;
@@ -54,7 +57,7 @@
5457

5558

5659
/// list of player list.
57-
@interface PlayerlList : NSObject
60+
@interface PlayerlList : NSObject <NSCoding>
5861

5962
/// use selectItem at application's runtime. selectIndex when serialize.
6063
@property (nonatomic) int selectIndex;

src/PlayerList.m

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,12 @@ -(void)removeAll
149149

150150
postEvent(EventID_tracks_changed, self);
151151
}
152+
153+
-(int)indexInParent
154+
{
155+
return [self.llist.playerlList indexOfObject:self];
156+
}
157+
152158
@end
153159

154160

@@ -172,6 +178,13 @@ -(instancetype)init
172178

173179
-(PlayerList*)getItem:(int)index
174180
{
181+
182+
183+
///TODO ,delete
184+
if (index == self.playerlList.count) {
185+
return nil;
186+
}
187+
175188
assert(index>=0 && index < self.playerlList.count);
176189

177190
return self.playerlList[index];

src/PlayerSerialize.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ using namespace std;
3939
@end
4040

4141

42-
@interface PlayerDocument (serialize)
42+
@interface PlayerDocument (serialize) <NSCoding>
4343
-(bool)saveConfig;
4444
-(bool)savePlaylist;
4545
-(bool)load;

0 commit comments

Comments
 (0)