mirror of
https://github.com/moonlight-stream/moonlight-ios.git
synced 2026-04-23 16:57:02 +00:00
added settings menu and persistent storage for settings
This commit is contained in:
22
Limelight/Database/DataManager.h
Normal file
22
Limelight/Database/DataManager.h
Normal file
@@ -0,0 +1,22 @@
|
||||
//
|
||||
// DataManager.h
|
||||
// Limelight
|
||||
//
|
||||
// Created by Diego Waxemberg on 10/28/14.
|
||||
// Copyright (c) 2014 Limelight Stream. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "Settings.h"
|
||||
#import "AppDelegate.h"
|
||||
#import "Hosts.h"
|
||||
|
||||
@interface DataManager : NSObject
|
||||
|
||||
@property (strong, nonatomic) AppDelegate* appDelegate;
|
||||
|
||||
- (void) saveSettingsWithBitrate:(NSInteger)bitrate framerate:(NSInteger)framerate height:(NSInteger)height width:(NSInteger)width;
|
||||
- (Settings*) retrieveSettings;
|
||||
|
||||
|
||||
@end
|
||||
65
Limelight/Database/DataManager.m
Normal file
65
Limelight/Database/DataManager.m
Normal file
@@ -0,0 +1,65 @@
|
||||
//
|
||||
// DataManager.m
|
||||
// Limelight
|
||||
//
|
||||
// Created by Diego Waxemberg on 10/28/14.
|
||||
// Copyright (c) 2014 Limelight Stream. All rights reserved.
|
||||
//
|
||||
|
||||
#import "DataManager.h"
|
||||
|
||||
@implementation DataManager
|
||||
static NSInteger DEFAULT_BITRATE = 10000;
|
||||
static NSInteger DEFAULT_FRAMERATE = 60;
|
||||
static NSInteger DEFAULT_HEIGHT = 720;
|
||||
static NSInteger DEFAULT_WIDTH = 1280;
|
||||
|
||||
- (id) init {
|
||||
self = [super init];
|
||||
self.appDelegate = [[UIApplication sharedApplication] delegate];
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void) saveSettingsWithBitrate:(NSInteger)bitrate framerate:(NSInteger)framerate height:(NSInteger)height width:(NSInteger)width {
|
||||
Settings* settingsToSave = [self retrieveSettings];
|
||||
settingsToSave.framerate = [NSNumber numberWithInteger:framerate];
|
||||
settingsToSave.bitrate = [NSNumber numberWithInteger:bitrate];
|
||||
settingsToSave.height = [NSNumber numberWithInteger:height];
|
||||
settingsToSave.width = [NSNumber numberWithInteger:width];
|
||||
[self saveSettings:settingsToSave];
|
||||
}
|
||||
|
||||
- (Settings*) retrieveSettings {
|
||||
NSFetchRequest* fetchRequest = [[NSFetchRequest alloc] init];
|
||||
NSEntityDescription* entity = [NSEntityDescription entityForName:@"Settings" inManagedObjectContext:[self.appDelegate managedObjectContext]];
|
||||
[fetchRequest setEntity:entity];
|
||||
[fetchRequest setAffectedStores:[NSArray arrayWithObjects:[[self.appDelegate persistentStoreCoordinator] persistentStoreForURL:[self.appDelegate getStoreURL]], nil]];
|
||||
|
||||
NSError* error;
|
||||
NSArray* fetchedRecords = [[self.appDelegate managedObjectContext] executeFetchRequest:fetchRequest error:&error];
|
||||
|
||||
if (fetchedRecords.count == 0) {
|
||||
// create a new settings object with the default values
|
||||
Settings* settings = [[Settings alloc] initWithEntity:entity insertIntoManagedObjectContext:[self.appDelegate managedObjectContext]];
|
||||
settings.framerate = [NSNumber numberWithInteger:DEFAULT_FRAMERATE];
|
||||
settings.bitrate = [NSNumber numberWithInteger:DEFAULT_BITRATE];
|
||||
settings.height = [NSNumber numberWithInteger:DEFAULT_HEIGHT];
|
||||
settings.width = [NSNumber numberWithInteger:DEFAULT_WIDTH];
|
||||
return settings;
|
||||
} else {
|
||||
// we should only ever have 1 settings object stored
|
||||
return [fetchedRecords objectAtIndex:0];
|
||||
}
|
||||
}
|
||||
|
||||
- (void) saveSettings:(Settings*)settings {
|
||||
NSError* error;
|
||||
if (![[self.appDelegate managedObjectContext] save:&error]) {
|
||||
NSLog(@"ERROR: Unable to save settings to database");
|
||||
}
|
||||
|
||||
[self.appDelegate saveContext];
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
18
Limelight/Database/Hosts.h
Normal file
18
Limelight/Database/Hosts.h
Normal file
@@ -0,0 +1,18 @@
|
||||
//
|
||||
// Hosts.h
|
||||
// Limelight
|
||||
//
|
||||
// Created by Diego Waxemberg on 10/28/14.
|
||||
// Copyright (c) 2014 Limelight Stream. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <CoreData/CoreData.h>
|
||||
|
||||
|
||||
@interface Hosts : NSManagedObject
|
||||
|
||||
@property (nonatomic, retain) NSString * address;
|
||||
@property (nonatomic, retain) NSString * name;
|
||||
|
||||
@end
|
||||
17
Limelight/Database/Hosts.m
Normal file
17
Limelight/Database/Hosts.m
Normal file
@@ -0,0 +1,17 @@
|
||||
//
|
||||
// Hosts.m
|
||||
// Limelight
|
||||
//
|
||||
// Created by Diego Waxemberg on 10/28/14.
|
||||
// Copyright (c) 2014 Limelight Stream. All rights reserved.
|
||||
//
|
||||
|
||||
#import "Hosts.h"
|
||||
|
||||
|
||||
@implementation Hosts
|
||||
|
||||
@dynamic address;
|
||||
@dynamic name;
|
||||
|
||||
@end
|
||||
20
Limelight/Database/Settings.h
Normal file
20
Limelight/Database/Settings.h
Normal file
@@ -0,0 +1,20 @@
|
||||
//
|
||||
// Settings.h
|
||||
// Limelight
|
||||
//
|
||||
// Created by Diego Waxemberg on 10/28/14.
|
||||
// Copyright (c) 2014 Limelight Stream. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <CoreData/CoreData.h>
|
||||
|
||||
|
||||
@interface Settings : NSManagedObject
|
||||
|
||||
@property (nonatomic, retain) NSNumber * bitrate;
|
||||
@property (nonatomic, retain) NSNumber * framerate;
|
||||
@property (nonatomic, retain) NSNumber * height;
|
||||
@property (nonatomic, retain) NSNumber * width;
|
||||
|
||||
@end
|
||||
19
Limelight/Database/Settings.m
Normal file
19
Limelight/Database/Settings.m
Normal file
@@ -0,0 +1,19 @@
|
||||
//
|
||||
// Settings.m
|
||||
// Limelight
|
||||
//
|
||||
// Created by Diego Waxemberg on 10/28/14.
|
||||
// Copyright (c) 2014 Limelight Stream. All rights reserved.
|
||||
//
|
||||
|
||||
#import "Settings.h"
|
||||
|
||||
|
||||
@implementation Settings
|
||||
|
||||
@dynamic bitrate;
|
||||
@dynamic framerate;
|
||||
@dynamic height;
|
||||
@dynamic width;
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user