Commit 60269274 authored by Tobias's avatar Tobias Committed by Felix Paul Kühne
Browse files

let interface controller listen to db update notifications until it gets...

let interface controller listen to db update notifications until it gets deallocated but defer updates while not active until it becomes active again
parent 9a3a33e8
......@@ -16,7 +16,7 @@
#import "VLCBaseInterfaceController.h"
@interface InterfaceController : WKInterfaceController
@interface InterfaceController : VLCBaseInterfaceController
@property (weak, nonatomic) IBOutlet WKInterfaceButton *previousButton;
@property (nonatomic, weak) IBOutlet WKInterfaceTable *table;
@property (weak, nonatomic) IBOutlet WKInterfaceButton *nextButton;
......
......@@ -34,6 +34,7 @@ typedef enum {
@interface InterfaceController()
@property (nonatomic, strong) VLCWatchTableController *tableController;
@property (nonatomic) VLCLibraryMode libraryMode;
@property (nonatomic) BOOL needsUpdate;
@end
@implementation InterfaceController
......@@ -69,20 +70,17 @@ typedef enum {
}
- (void) dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self name:VLCDBUpdateNotification object:nil];
}
- (void)willActivate {
// This method is called when watch view controller is about to be visible to user
[super willActivate];
NSLog(@"%s",__PRETTY_FUNCTION__);
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateData) name:VLCDBUpdateNotification object:nil];
}
- (void)didDeactivate {
// This method is called when watch view controller is no longer visible
[super didDeactivate];
NSLog(@"%s",__PRETTY_FUNCTION__);
[[NSNotificationCenter defaultCenter] removeObserver:self name:VLCDBUpdateNotification object:nil];
if (self.needsUpdate) {
[self updateData];
}
}
- (void)table:(WKInterfaceTable *)table didSelectRowAtIndex:(NSInteger)rowIndex {
......@@ -105,7 +103,7 @@ typedef enum {
[self addMenuItemWithImageNamed:@"AllFiles" title: NSLocalizedString(@"LIBRARY_ALL_FILES", nil) action:@selector(switchToAllFiles)];
[self addMenuItemWithImageNamed:@"MusicAlbums" title: NSLocalizedString(@"LIBRARY_MUSIC", nil) action:@selector(switchToMusic)];
[self addMenuItemWithImageNamed:@"TVShowsIcon" title: NSLocalizedString(@"LIBRARY_SERIES", nil) action:@selector(switchToSeries)];
[self addMenuItemWithItemIcon:WKMenuItemIconMore title: NSLocalizedString(@"NOW_PLAYING", nil) action:@selector(showNowPlaying:)];
[self addNowPlayingMenu];
}
- (void)switchToAllFiles{
......@@ -126,13 +124,16 @@ typedef enum {
[self updateData];
}
- (void)showNowPlaying:(id)sender {
[self presentControllerWithName:@"nowPlaying" context:nil];
}
#pragma mark - data handling
- (void)updateData {
self.tableController.objects = [self mediaArray];
// if not activated/visible we defer the update til activation
if (self.activated) {
self.tableController.objects = [self mediaArray];
self.needsUpdate = NO;
} else {
self.needsUpdate = YES;
}
}
- (void)configureTableRowController:(id)rowController withObject:(id)storageObject {
......
......@@ -13,7 +13,9 @@
#import <WatchKit/WatchKit.h>
@interface VLCBaseInterfaceController : WKInterfaceController
@property (nonatomic, assign, readonly, getter=isActivated) BOOL activated;
- (void)addNowPlayingMenu;
- (void)showNowPlaying:(id)sender;
@end
......@@ -17,6 +17,9 @@
- (void)awakeWithContext:(id)context {
[super awakeWithContext:context];
}
- (void)addNowPlayingMenu {
[self addMenuItemWithItemIcon:WKMenuItemIconMore title: NSLocalizedString(@"NOW_PLAYING", nil) action:@selector(showNowPlaying:)];
}
......@@ -24,4 +27,14 @@
[self presentControllerWithName:@"nowPlaying" context:nil];
}
- (void)willActivate {
[super willActivate];
_activated = YES;
}
- (void)didDeactivate {
[super didDeactivate];
_activated = NO;
}
@end
......@@ -34,6 +34,8 @@
- (void)awakeWithContext:(id)context {
[super awakeWithContext:context];
[self addNowPlayingMenu];
if ([context isKindOfClass:[MLFile class]]) {
[self configureWithFile:context];
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment