From 0e8647ad078fb00f4a6bf12caffd313b3862e9d7 Mon Sep 17 00:00:00 2001 From: Andrew Scagnelli Date: Sun, 28 Oct 2018 16:23:24 -0400 Subject: [PATCH] feat: added settings bundle --- Limelight/Database/TemporarySettings.m | 47 +++++- Moonlight TV/Settings.bundle/Root.plist | 143 ++++++++++++++++++ .../Settings.bundle/en.lproj/Root.strings | Bin 0 -> 546 bytes Moonlight.xcodeproj/project.pbxproj | 4 + 4 files changed, 190 insertions(+), 4 deletions(-) create mode 100644 Moonlight TV/Settings.bundle/Root.plist create mode 100644 Moonlight TV/Settings.bundle/en.lproj/Root.strings diff --git a/Limelight/Database/TemporarySettings.m b/Limelight/Database/TemporarySettings.m index dcef089..4ed3f92 100644 --- a/Limelight/Database/TemporarySettings.m +++ b/Limelight/Database/TemporarySettings.m @@ -15,18 +15,57 @@ self.parent = settings; +#if TARGET_OS_TV + NSInteger _bitrate = [[NSUserDefaults standardUserDefaults] integerForKey:@"bitrate"]; + NSInteger _framerate = [[NSUserDefaults standardUserDefaults] integerForKey:@"framerate"]; + + if (_bitrate) { + self.bitrate = [NSNumber numberWithInteger:_bitrate]; + } else { + self.bitrate = [NSNumber numberWithInteger:20000]; + } + + if (_framerate) { + self.framerate = [NSNumber numberWithInteger:_framerate]; + } else { + self.framerate = [NSNumber numberWithInteger:60]; + } + + self.useHevc = [[NSUserDefaults standardUserDefaults] boolForKey:@"useHevc"] || NO; + self.playAudioOnPC = [[NSUserDefaults standardUserDefaults] boolForKey:@"audioOnPC"] || NO; + self.enableHdr = [[NSUserDefaults standardUserDefaults] boolForKey:@"enableHdr"] || NO; + self.optimizeGames = [[NSUserDefaults standardUserDefaults] boolForKey:@"optimizeGames"] || YES; + self.multiController = YES; + NSInteger _screenSize = [[NSUserDefaults standardUserDefaults] integerForKey:@"streamResolution"]; + switch (_screenSize) { + case 0: + self.height = [NSNumber numberWithInteger:720]; + self.width = [NSNumber numberWithInteger:1280]; + break; + case 2: + self.height = [NSNumber numberWithInteger:2160]; + self.width = [NSNumber numberWithInteger:3840]; + break; + case 1: + default: + self.height = [NSNumber numberWithInteger:1080]; + self.width = [NSNumber numberWithInteger:1920]; + break; + } +#else self.bitrate = settings.bitrate; self.framerate = settings.framerate; self.height = settings.height; self.width = settings.width; - self.onscreenControls = settings.onscreenControls; - self.uniqueId = settings.uniqueId; - self.streamingRemotely = settings.streamingRemotely; self.useHevc = settings.useHevc; - self.multiController = settings.multiController; self.playAudioOnPC = settings.playAudioOnPC; self.enableHdr = settings.enableHdr; self.optimizeGames = settings.optimizeGames; + self.multiController = settings.multiController; +#endif + self.onscreenControls = settings.onscreenControls; + self.uniqueId = settings.uniqueId; + self.streamingRemotely = settings.streamingRemotely; return self; } diff --git a/Moonlight TV/Settings.bundle/Root.plist b/Moonlight TV/Settings.bundle/Root.plist new file mode 100644 index 0000000..1ca6b0d --- /dev/null +++ b/Moonlight TV/Settings.bundle/Root.plist @@ -0,0 +1,143 @@ + + + + + StringsTable + Root + PreferenceSpecifiers + + + Type + PSGroupSpecifier + Title + Host Configuration + + + Type + PSToggleSwitchSpecifier + DefaultValue + + Title + Play Audio on Host PC + Key + audioOnPC + + + TrueValue + Optimize Games + FalseValue + Off + Type + PSToggleSwitchSpecifier + Title + Optimize Games + Key + optimizeGames + DefaultValue + + + + Type + PSToggleSwitchSpecifier + Title + HEVC Video + Key + useHevc + DefaultValue + + + + Type + PSToggleSwitchSpecifier + Title + Enable HDR + Key + enableHdr + DefaultValue + + + + Type + PSGroupSpecifier + Title + Stream Configuration + + + Type + PSMultiValueSpecifier + Title + Stream Resolution + Key + streamResolution + DefaultValue + 1 + Values + + 0 + 1 + 2 + + Titles + + 720p + 1080p + 4K + + + + Type + PSMultiValueSpecifier + Title + Frame Rate + Key + framerate + DefaultValue + 60 + Values + + 30 + 60 + + Titles + + 30 FPS + 60 FPS + + + + Type + PSMultiValueSpecifier + Title + Bitrate + Key + bitrate + DefaultValue + 10000 + Titles + + 0.5 Mbps + 1 Mbps + 2 Mbps + 5 Mbps + 10 Mbps + 20 Mbps + 25 Mbps + 50 Mbps + 100 Mbps + + Values + + 500 + 1000 + 2000 + 5000 + 10000 + 20000 + 25000 + 50000 + 100000 + + + + + diff --git a/Moonlight TV/Settings.bundle/en.lproj/Root.strings b/Moonlight TV/Settings.bundle/en.lproj/Root.strings new file mode 100644 index 0000000000000000000000000000000000000000..8cd87b9d6b20c1fbf87bd4db3db267fca5ad4df9 GIT binary patch literal 546 zcmaixOHRW;5JYRuDMndFh#Ua1V1d}N;sVAV2TO?uC3a9aJn*VxFrY}tnon0(S66#J z-d9>G>6W!ur(SDqlp`9nn~*(m%iWnv?yq`Qfp6XbK1?+om~~#r)ZnhkYQU_VbfjuT zHNn`CX<0sd*m1A}>&5sU$akD=GTXJ1e literal 0 HcmV?d00001 diff --git a/Moonlight.xcodeproj/project.pbxproj b/Moonlight.xcodeproj/project.pbxproj index dc484dd..82ebeef 100644 --- a/Moonlight.xcodeproj/project.pbxproj +++ b/Moonlight.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 693B3A9B218638CD00982F7B /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 693B3A9A218638CD00982F7B /* Settings.bundle */; }; 9832D1361BBCD5C50036EF48 /* TemporaryApp.m in Sources */ = {isa = PBXBuildFile; fileRef = 9832D1351BBCD5C50036EF48 /* TemporaryApp.m */; }; 9865DC30213260B40005B9B9 /* libmoonlight-common-tv.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FB1A68152132509400507771 /* libmoonlight-common-tv.a */; }; 9865DC31213260F10005B9B9 /* mkcert.c in Sources */ = {isa = PBXBuildFile; fileRef = FB89460719F646E200339C8A /* mkcert.c */; }; @@ -160,6 +161,7 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 693B3A9A218638CD00982F7B /* Settings.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = Settings.bundle; sourceTree = ""; }; 98132E8C20BC9A62007A053F /* Moonlight v1.1.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "Moonlight v1.1.xcdatamodel"; sourceTree = ""; }; 9832D1341BBCD5C50036EF48 /* TemporaryApp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TemporaryApp.h; path = Database/TemporaryApp.h; sourceTree = ""; }; 9832D1351BBCD5C50036EF48 /* TemporaryApp.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TemporaryApp.m; path = Database/TemporaryApp.m; sourceTree = ""; }; @@ -440,6 +442,7 @@ FB1A67612132419A00507771 /* Assets.xcassets */, FB1A67632132419A00507771 /* Info.plist */, FB1A67642132419A00507771 /* main.m */, + 693B3A9A218638CD00982F7B /* Settings.bundle */, ); path = "Moonlight TV"; sourceTree = ""; @@ -968,6 +971,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 693B3A9B218638CD00982F7B /* Settings.bundle in Resources */, FB1A681E21328A1B00507771 /* Images.xcassets in Resources */, FB1A67622132419A00507771 /* Assets.xcassets in Resources */, FB1A67602132419700507771 /* Main.storyboard in Resources */,