From 374f12dea25ba078f829dd397318b77dea0c595b Mon Sep 17 00:00:00 2001 From: CoolStar Date: Mon, 21 Jan 2013 23:28:58 -0800 Subject: [PATCH] Add Settings Bundle, Use InAppSettingsKit as a submodule, Add support for multiple video recordings. Fix crash on 2nd recording. --- .gitmodules | 3 + RecordMyScreen.xcodeproj/project.pbxproj | 157 +++++++++++++++++++++-- RecordMyScreen/CSAppDelegate.m | 13 +- RecordMyScreen/CSRecordViewController.m | 29 ++++- RecordMyScreen/headers/.DS_Store | Bin 6148 -> 6148 bytes RecordMyScreen/settings.png | Bin 0 -> 790 bytes RecordMyScreen/settings@2x.png | Bin 0 -> 2002 bytes Settings.bundle/Root.plist | 113 ++++++++++++++++ Settings.bundle/en.lproj/Root.strings | Bin 0 -> 546 bytes 9 files changed, 298 insertions(+), 17 deletions(-) create mode 100644 .gitmodules create mode 100755 RecordMyScreen/settings.png create mode 100755 RecordMyScreen/settings@2x.png create mode 100644 Settings.bundle/Root.plist create mode 100644 Settings.bundle/en.lproj/Root.strings diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..a35a653 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "InAppSettingsKit"] + path = InAppSettingsKit + url = https://github.com/futuretap/InAppSettingsKit.git diff --git a/RecordMyScreen.xcodeproj/project.pbxproj b/RecordMyScreen.xcodeproj/project.pbxproj index 57b56aa..52d0e9b 100644 --- a/RecordMyScreen.xcodeproj/project.pbxproj +++ b/RecordMyScreen.xcodeproj/project.pbxproj @@ -25,6 +25,7 @@ 382758FC1692565F000D537C /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 382758FA16925657000D537C /* CoreMedia.framework */; }; 3844BB9B16982DAF00F326C2 /* list.png in Resources */ = {isa = PBXBuildFile; fileRef = 3844BB9916982DAF00F326C2 /* list.png */; }; 3844BB9C16982DAF00F326C2 /* list@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3844BB9A16982DAF00F326C2 /* list@2x.png */; }; + 384D7C0B16A9F70E00610DA9 /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 384D7C0A16A9F70E00610DA9 /* Settings.bundle */; }; 389BCCFA169010CF00877CA5 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 389BCCF9169010CF00877CA5 /* UIKit.framework */; }; 389BCCFC169010CF00877CA5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 389BCCFB169010CF00877CA5 /* Foundation.framework */; }; 389BCCFE169010CF00877CA5 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 389BCCFD169010CF00877CA5 /* CoreGraphics.framework */; }; @@ -33,6 +34,23 @@ 389BCD0A169010CF00877CA5 /* CSAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 389BCD09169010CF00877CA5 /* CSAppDelegate.m */; }; 389BCD2E1690113900877CA5 /* CSRecordViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 389BCD2C1690113900877CA5 /* CSRecordViewController.m */; }; 389BCD2F1690113900877CA5 /* CSRecordViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 389BCD2D1690113900877CA5 /* CSRecordViewController.xib */; }; + 38E6ECAE16ACA3CB000BECC2 /* IASKAppSettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 38E6EC9016ACA3CB000BECC2 /* IASKAppSettingsViewController.m */; }; + 38E6ECAF16ACA3CB000BECC2 /* IASKAppSettingsWebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 38E6EC9216ACA3CB000BECC2 /* IASKAppSettingsWebViewController.m */; }; + 38E6ECB016ACA3CB000BECC2 /* IASKSpecifierValuesViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 38E6EC9416ACA3CB000BECC2 /* IASKSpecifierValuesViewController.m */; }; + 38E6ECB116ACA3CB000BECC2 /* IASKSettingsReader.m in Sources */ = {isa = PBXBuildFile; fileRef = 38E6EC9816ACA3CB000BECC2 /* IASKSettingsReader.m */; }; + 38E6ECB216ACA3CB000BECC2 /* IASKSettingsStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 38E6EC9A16ACA3CB000BECC2 /* IASKSettingsStore.m */; }; + 38E6ECB316ACA3CB000BECC2 /* IASKSettingsStoreFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 38E6EC9C16ACA3CB000BECC2 /* IASKSettingsStoreFile.m */; }; + 38E6ECB416ACA3CB000BECC2 /* IASKSettingsStoreUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 38E6EC9E16ACA3CB000BECC2 /* IASKSettingsStoreUserDefaults.m */; }; + 38E6ECB516ACA3CB000BECC2 /* IASKSpecifier.m in Sources */ = {isa = PBXBuildFile; fileRef = 38E6ECA016ACA3CB000BECC2 /* IASKSpecifier.m */; }; + 38E6ECB616ACA3CB000BECC2 /* IASKPSSliderSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 38E6ECA316ACA3CB000BECC2 /* IASKPSSliderSpecifierViewCell.m */; }; + 38E6ECB716ACA3CB000BECC2 /* IASKPSTextFieldSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 38E6ECA516ACA3CB000BECC2 /* IASKPSTextFieldSpecifierViewCell.m */; }; + 38E6ECB816ACA3CB000BECC2 /* IASKPSTitleValueSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 38E6ECA716ACA3CB000BECC2 /* IASKPSTitleValueSpecifierViewCell.m */; }; + 38E6ECB916ACA3CB000BECC2 /* IASKSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = 38E6ECA916ACA3CB000BECC2 /* IASKSlider.m */; }; + 38E6ECBA16ACA3CB000BECC2 /* IASKSwitch.m in Sources */ = {isa = PBXBuildFile; fileRef = 38E6ECAB16ACA3CB000BECC2 /* IASKSwitch.m */; }; + 38E6ECBB16ACA3CB000BECC2 /* IASKTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 38E6ECAD16ACA3CB000BECC2 /* IASKTextField.m */; }; + 38E6ECBE16ACA3FE000BECC2 /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 38E6ECBC16ACA3F9000BECC2 /* MessageUI.framework */; }; + 38E6ECC116ACB77D000BECC2 /* settings.png in Resources */ = {isa = PBXBuildFile; fileRef = 38E6ECBF16ACB77D000BECC2 /* settings.png */; }; + 38E6ECC216ACB77D000BECC2 /* settings@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 38E6ECC016ACB77D000BECC2 /* settings@2x.png */; }; 8ECF16F31697E07400DBA7D2 /* GraphicsServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8ECF16F21697E07400DBA7D2 /* GraphicsServices.framework */; }; 8ECF16F51697E0A000DBA7D2 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8ECF16F41697E0A000DBA7D2 /* QuartzCore.framework */; }; DF80BC12169482EA00EA056A /* CSRecordViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = DF80BC11169482EA00EA056A /* CSRecordViewController_iPad.xib */; }; @@ -80,6 +98,7 @@ 382758FA16925657000D537C /* CoreMedia.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMedia.framework; path = System/Library/Frameworks/CoreMedia.framework; sourceTree = SDKROOT; }; 3844BB9916982DAF00F326C2 /* list.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = list.png; sourceTree = ""; }; 3844BB9A16982DAF00F326C2 /* list@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "list@2x.png"; sourceTree = ""; }; + 384D7C0A16A9F70E00610DA9 /* Settings.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = Settings.bundle; sourceTree = ""; }; 389BCCF5169010CF00877CA5 /* RecordMyScreen.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = RecordMyScreen.app; sourceTree = BUILT_PRODUCTS_DIR; }; 389BCCF9169010CF00877CA5 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 389BCCFB169010CF00877CA5 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; @@ -93,6 +112,38 @@ 389BCD2B1690113900877CA5 /* CSRecordViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSRecordViewController.h; sourceTree = ""; }; 389BCD2C1690113900877CA5 /* CSRecordViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CSRecordViewController.m; sourceTree = ""; }; 389BCD2D1690113900877CA5 /* CSRecordViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CSRecordViewController.xib; sourceTree = ""; }; + 38E6EC8F16ACA3CB000BECC2 /* IASKAppSettingsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKAppSettingsViewController.h; sourceTree = ""; }; + 38E6EC9016ACA3CB000BECC2 /* IASKAppSettingsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKAppSettingsViewController.m; sourceTree = ""; }; + 38E6EC9116ACA3CB000BECC2 /* IASKAppSettingsWebViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKAppSettingsWebViewController.h; sourceTree = ""; }; + 38E6EC9216ACA3CB000BECC2 /* IASKAppSettingsWebViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKAppSettingsWebViewController.m; sourceTree = ""; }; + 38E6EC9316ACA3CB000BECC2 /* IASKSpecifierValuesViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSpecifierValuesViewController.h; sourceTree = ""; }; + 38E6EC9416ACA3CB000BECC2 /* IASKSpecifierValuesViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSpecifierValuesViewController.m; sourceTree = ""; }; + 38E6EC9516ACA3CB000BECC2 /* IASKViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKViewController.h; sourceTree = ""; }; + 38E6EC9716ACA3CB000BECC2 /* IASKSettingsReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSettingsReader.h; sourceTree = ""; }; + 38E6EC9816ACA3CB000BECC2 /* IASKSettingsReader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSettingsReader.m; sourceTree = ""; }; + 38E6EC9916ACA3CB000BECC2 /* IASKSettingsStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSettingsStore.h; sourceTree = ""; }; + 38E6EC9A16ACA3CB000BECC2 /* IASKSettingsStore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSettingsStore.m; sourceTree = ""; }; + 38E6EC9B16ACA3CB000BECC2 /* IASKSettingsStoreFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSettingsStoreFile.h; sourceTree = ""; }; + 38E6EC9C16ACA3CB000BECC2 /* IASKSettingsStoreFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSettingsStoreFile.m; sourceTree = ""; }; + 38E6EC9D16ACA3CB000BECC2 /* IASKSettingsStoreUserDefaults.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSettingsStoreUserDefaults.h; sourceTree = ""; }; + 38E6EC9E16ACA3CB000BECC2 /* IASKSettingsStoreUserDefaults.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSettingsStoreUserDefaults.m; sourceTree = ""; }; + 38E6EC9F16ACA3CB000BECC2 /* IASKSpecifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSpecifier.h; sourceTree = ""; }; + 38E6ECA016ACA3CB000BECC2 /* IASKSpecifier.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSpecifier.m; sourceTree = ""; }; + 38E6ECA216ACA3CB000BECC2 /* IASKPSSliderSpecifierViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKPSSliderSpecifierViewCell.h; sourceTree = ""; }; + 38E6ECA316ACA3CB000BECC2 /* IASKPSSliderSpecifierViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKPSSliderSpecifierViewCell.m; sourceTree = ""; }; + 38E6ECA416ACA3CB000BECC2 /* IASKPSTextFieldSpecifierViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKPSTextFieldSpecifierViewCell.h; sourceTree = ""; }; + 38E6ECA516ACA3CB000BECC2 /* IASKPSTextFieldSpecifierViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKPSTextFieldSpecifierViewCell.m; sourceTree = ""; }; + 38E6ECA616ACA3CB000BECC2 /* IASKPSTitleValueSpecifierViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKPSTitleValueSpecifierViewCell.h; sourceTree = ""; }; + 38E6ECA716ACA3CB000BECC2 /* IASKPSTitleValueSpecifierViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKPSTitleValueSpecifierViewCell.m; sourceTree = ""; }; + 38E6ECA816ACA3CB000BECC2 /* IASKSlider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSlider.h; sourceTree = ""; }; + 38E6ECA916ACA3CB000BECC2 /* IASKSlider.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSlider.m; sourceTree = ""; }; + 38E6ECAA16ACA3CB000BECC2 /* IASKSwitch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSwitch.h; sourceTree = ""; }; + 38E6ECAB16ACA3CB000BECC2 /* IASKSwitch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSwitch.m; sourceTree = ""; }; + 38E6ECAC16ACA3CB000BECC2 /* IASKTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKTextField.h; sourceTree = ""; }; + 38E6ECAD16ACA3CB000BECC2 /* IASKTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKTextField.m; sourceTree = ""; }; + 38E6ECBC16ACA3F9000BECC2 /* MessageUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MessageUI.framework; path = System/Library/Frameworks/MessageUI.framework; sourceTree = SDKROOT; }; + 38E6ECBF16ACB77D000BECC2 /* settings.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = settings.png; sourceTree = ""; }; + 38E6ECC016ACB77D000BECC2 /* settings@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "settings@2x.png"; sourceTree = ""; }; 8ECF16F21697E07400DBA7D2 /* GraphicsServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GraphicsServices.framework; path = System/Library/PrivateFrameworks/GraphicsServices.framework; sourceTree = SDKROOT; }; 8ECF16F41697E0A000DBA7D2 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; DF80BC11169482EA00EA056A /* CSRecordViewController_iPad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CSRecordViewController_iPad.xib; sourceTree = ""; }; @@ -103,15 +154,16 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 8ECF16F51697E0A000DBA7D2 /* QuartzCore.framework in Frameworks */, 382758F41690F43B000D537C /* AVFoundation.framework in Frameworks */, - 389BCCFA169010CF00877CA5 /* UIKit.framework in Frameworks */, - 389BCCFC169010CF00877CA5 /* Foundation.framework in Frameworks */, 389BCCFE169010CF00877CA5 /* CoreGraphics.framework in Frameworks */, 382758FC1692565F000D537C /* CoreMedia.framework in Frameworks */, 382758F91692563A000D537C /* CoreVideo.framework in Frameworks */, - 38114EDD1692F83C00BE64B4 /* MediaPlayer.framework in Frameworks */, + 389BCCFC169010CF00877CA5 /* Foundation.framework in Frameworks */, 8ECF16F31697E07400DBA7D2 /* GraphicsServices.framework in Frameworks */, + 38114EDD1692F83C00BE64B4 /* MediaPlayer.framework in Frameworks */, + 38E6ECBE16ACA3FE000BECC2 /* MessageUI.framework in Frameworks */, + 8ECF16F51697E0A000DBA7D2 /* QuartzCore.framework in Frameworks */, + 389BCCFA169010CF00877CA5 /* UIKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -184,6 +236,7 @@ 389BCCEA169010CF00877CA5 = { isa = PBXGroup; children = ( + 384D7C0A16A9F70E00610DA9 /* Settings.bundle */, 389BCCFF169010CF00877CA5 /* RecordMyScreen */, 389BCCF8169010CF00877CA5 /* Frameworks */, 389BCCF6169010CF00877CA5 /* Products */, @@ -201,15 +254,16 @@ 389BCCF8169010CF00877CA5 /* Frameworks */ = { isa = PBXGroup; children = ( - 8ECF16F41697E0A000DBA7D2 /* QuartzCore.framework */, - 8ECF16F21697E07400DBA7D2 /* GraphicsServices.framework */, - 38114EDB1692F82E00BE64B4 /* MediaPlayer.framework */, + 382758F21690F40C000D537C /* AVFoundation.framework */, + 389BCCFD169010CF00877CA5 /* CoreGraphics.framework */, 382758FA16925657000D537C /* CoreMedia.framework */, 382758F716925634000D537C /* CoreVideo.framework */, - 382758F21690F40C000D537C /* AVFoundation.framework */, - 389BCCF9169010CF00877CA5 /* UIKit.framework */, 389BCCFB169010CF00877CA5 /* Foundation.framework */, - 389BCCFD169010CF00877CA5 /* CoreGraphics.framework */, + 8ECF16F21697E07400DBA7D2 /* GraphicsServices.framework */, + 38114EDB1692F82E00BE64B4 /* MediaPlayer.framework */, + 38E6ECBC16ACA3F9000BECC2 /* MessageUI.framework */, + 8ECF16F41697E0A000DBA7D2 /* QuartzCore.framework */, + 389BCCF9169010CF00877CA5 /* UIKit.framework */, ); name = Frameworks; sourceTree = ""; @@ -229,6 +283,7 @@ 389BCD00169010CF00877CA5 /* Supporting Files */ = { isa = PBXGroup; children = ( + 38E6EC8D16ACA3CB000BECC2 /* InAppSettingsKit */, 38114EC01692D88A00BE64B4 /* headers */, 382758F01690F307000D537C /* Default-568h@2x.png */, 38114EE61693D9F200BE64B4 /* icon.png */, @@ -243,6 +298,8 @@ 382758E11690DEAA000D537C /* video@2x.png */, 3844BB9916982DAF00F326C2 /* list.png */, 3844BB9A16982DAF00F326C2 /* list@2x.png */, + 38E6ECBF16ACB77D000BECC2 /* settings.png */, + 38E6ECC016ACB77D000BECC2 /* settings@2x.png */, 389BCD01169010CF00877CA5 /* RecordMyScreen-Info.plist */, 389BCD02169010CF00877CA5 /* InfoPlist.strings */, 389BCD05169010CF00877CA5 /* main.m */, @@ -262,6 +319,67 @@ name = CSRecordViewController; sourceTree = ""; }; + 38E6EC8D16ACA3CB000BECC2 /* InAppSettingsKit */ = { + isa = PBXGroup; + children = ( + 38E6EC8E16ACA3CB000BECC2 /* Controllers */, + 38E6EC9616ACA3CB000BECC2 /* Models */, + 38E6ECA116ACA3CB000BECC2 /* Views */, + ); + name = InAppSettingsKit; + path = InAppSettingsKit/InAppSettingsKit; + sourceTree = SOURCE_ROOT; + }; + 38E6EC8E16ACA3CB000BECC2 /* Controllers */ = { + isa = PBXGroup; + children = ( + 38E6EC8F16ACA3CB000BECC2 /* IASKAppSettingsViewController.h */, + 38E6EC9016ACA3CB000BECC2 /* IASKAppSettingsViewController.m */, + 38E6EC9116ACA3CB000BECC2 /* IASKAppSettingsWebViewController.h */, + 38E6EC9216ACA3CB000BECC2 /* IASKAppSettingsWebViewController.m */, + 38E6EC9316ACA3CB000BECC2 /* IASKSpecifierValuesViewController.h */, + 38E6EC9416ACA3CB000BECC2 /* IASKSpecifierValuesViewController.m */, + 38E6EC9516ACA3CB000BECC2 /* IASKViewController.h */, + ); + path = Controllers; + sourceTree = ""; + }; + 38E6EC9616ACA3CB000BECC2 /* Models */ = { + isa = PBXGroup; + children = ( + 38E6EC9716ACA3CB000BECC2 /* IASKSettingsReader.h */, + 38E6EC9816ACA3CB000BECC2 /* IASKSettingsReader.m */, + 38E6EC9916ACA3CB000BECC2 /* IASKSettingsStore.h */, + 38E6EC9A16ACA3CB000BECC2 /* IASKSettingsStore.m */, + 38E6EC9B16ACA3CB000BECC2 /* IASKSettingsStoreFile.h */, + 38E6EC9C16ACA3CB000BECC2 /* IASKSettingsStoreFile.m */, + 38E6EC9D16ACA3CB000BECC2 /* IASKSettingsStoreUserDefaults.h */, + 38E6EC9E16ACA3CB000BECC2 /* IASKSettingsStoreUserDefaults.m */, + 38E6EC9F16ACA3CB000BECC2 /* IASKSpecifier.h */, + 38E6ECA016ACA3CB000BECC2 /* IASKSpecifier.m */, + ); + path = Models; + sourceTree = ""; + }; + 38E6ECA116ACA3CB000BECC2 /* Views */ = { + isa = PBXGroup; + children = ( + 38E6ECA216ACA3CB000BECC2 /* IASKPSSliderSpecifierViewCell.h */, + 38E6ECA316ACA3CB000BECC2 /* IASKPSSliderSpecifierViewCell.m */, + 38E6ECA416ACA3CB000BECC2 /* IASKPSTextFieldSpecifierViewCell.h */, + 38E6ECA516ACA3CB000BECC2 /* IASKPSTextFieldSpecifierViewCell.m */, + 38E6ECA616ACA3CB000BECC2 /* IASKPSTitleValueSpecifierViewCell.h */, + 38E6ECA716ACA3CB000BECC2 /* IASKPSTitleValueSpecifierViewCell.m */, + 38E6ECA816ACA3CB000BECC2 /* IASKSlider.h */, + 38E6ECA916ACA3CB000BECC2 /* IASKSlider.m */, + 38E6ECAA16ACA3CB000BECC2 /* IASKSwitch.h */, + 38E6ECAB16ACA3CB000BECC2 /* IASKSwitch.m */, + 38E6ECAC16ACA3CB000BECC2 /* IASKTextField.h */, + 38E6ECAD16ACA3CB000BECC2 /* IASKTextField.m */, + ); + path = Views; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -298,6 +416,8 @@ hasScannedForEncodings = 0; knownRegions = ( en, + de, + fr, ); mainGroup = 389BCCEA169010CF00877CA5; productRefGroup = 389BCCF6169010CF00877CA5 /* Products */; @@ -330,6 +450,9 @@ DF80BC12169482EA00EA056A /* CSRecordViewController_iPad.xib in Resources */, 3844BB9B16982DAF00F326C2 /* list.png in Resources */, 3844BB9C16982DAF00F326C2 /* list@2x.png in Resources */, + 384D7C0B16A9F70E00610DA9 /* Settings.bundle in Resources */, + 38E6ECC116ACB77D000BECC2 /* settings.png in Resources */, + 38E6ECC216ACB77D000BECC2 /* settings@2x.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -344,6 +467,20 @@ 389BCD0A169010CF00877CA5 /* CSAppDelegate.m in Sources */, 389BCD2E1690113900877CA5 /* CSRecordViewController.m in Sources */, 382758E71690E0EE000D537C /* CSRecordingListViewController.m in Sources */, + 38E6ECAE16ACA3CB000BECC2 /* IASKAppSettingsViewController.m in Sources */, + 38E6ECAF16ACA3CB000BECC2 /* IASKAppSettingsWebViewController.m in Sources */, + 38E6ECB016ACA3CB000BECC2 /* IASKSpecifierValuesViewController.m in Sources */, + 38E6ECB116ACA3CB000BECC2 /* IASKSettingsReader.m in Sources */, + 38E6ECB216ACA3CB000BECC2 /* IASKSettingsStore.m in Sources */, + 38E6ECB316ACA3CB000BECC2 /* IASKSettingsStoreFile.m in Sources */, + 38E6ECB416ACA3CB000BECC2 /* IASKSettingsStoreUserDefaults.m in Sources */, + 38E6ECB516ACA3CB000BECC2 /* IASKSpecifier.m in Sources */, + 38E6ECB616ACA3CB000BECC2 /* IASKPSSliderSpecifierViewCell.m in Sources */, + 38E6ECB716ACA3CB000BECC2 /* IASKPSTextFieldSpecifierViewCell.m in Sources */, + 38E6ECB816ACA3CB000BECC2 /* IASKPSTitleValueSpecifierViewCell.m in Sources */, + 38E6ECB916ACA3CB000BECC2 /* IASKSlider.m in Sources */, + 38E6ECBA16ACA3CB000BECC2 /* IASKSwitch.m in Sources */, + 38E6ECBB16ACA3CB000BECC2 /* IASKTextField.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/RecordMyScreen/CSAppDelegate.m b/RecordMyScreen/CSAppDelegate.m index c579e82..90e7e28 100644 --- a/RecordMyScreen/CSAppDelegate.m +++ b/RecordMyScreen/CSAppDelegate.m @@ -9,6 +9,7 @@ #import "CSAppDelegate.h" #import "CSRecordViewController.h" #import "CSRecordingListViewController.h" +#import "IASKAppSettingsViewController.h" @implementation CSAppDelegate @@ -23,8 +24,9 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( { self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; // Override point for customization after application launch. - UINavigationController *savedNavVC; + UINavigationController *savedNavVC,*settingsNavVC; UIViewController *recordVC,*savedVC; + IASKAppSettingsViewController *settingsVC; // Check for iPad if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { @@ -37,8 +39,15 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( savedNavVC = [[[UINavigationController alloc] initWithRootViewController:savedVC] autorelease]; savedNavVC.navigationBar.barStyle = UIBarStyleBlack; + settingsVC = [[[IASKAppSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped] autorelease]; + settingsVC.title = NSLocalizedString(@"Settings", @""); + settingsVC.tabBarItem = [[[UITabBarItem alloc] initWithTitle:settingsVC.title image:[UIImage imageNamed:@"settings"] tag:0] autorelease]; + settingsVC.showDoneButton = NO; + settingsNavVC = [[[UINavigationController alloc] initWithRootViewController:settingsVC] autorelease]; + settingsNavVC.navigationBar.barStyle = UIBarStyleBlack; + self.tabBarController = [[[UITabBarController alloc] init] autorelease]; - self.tabBarController.viewControllers = @[recordVC,savedNavVC]; + self.tabBarController.viewControllers = @[recordVC,savedNavVC,settingsNavVC]; self.window.rootViewController = self.tabBarController; [self.window makeKeyAndVisible]; return YES; diff --git a/RecordMyScreen/CSRecordViewController.m b/RecordMyScreen/CSRecordViewController.m index da9820e..68b21cb 100644 --- a/RecordMyScreen/CSRecordViewController.m +++ b/RecordMyScreen/CSRecordViewController.m @@ -108,8 +108,11 @@ - (void)record: (id)sender [[AVAudioSession sharedInstance] setActive:YES error:&sessionError]; // Set the number of audio channels + NSNumber *audioChannels = [[NSUserDefaults standardUserDefaults] objectForKey:@"channels"]; + NSNumber *sampleRate = [[NSUserDefaults standardUserDefaults] objectForKey:@"samplerate"]; NSDictionary *audioSettings = @{ - AVNumberOfChannelsKey : [NSNumber numberWithInt:2] + AVNumberOfChannelsKey : audioChannels ? audioChannels : [NSNumber numberWithInt:2], + AVSampleRateKey : sampleRate ? sampleRate : [NSNumber numberWithFloat:44100.0f] }; // Set output path of the audio file @@ -281,7 +284,7 @@ - (void)captureShot:(CMTime)frameTime static NSMutableArray * buffers = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ - buffers = [NSMutableArray array]; + buffers = [[NSMutableArray alloc] init]; }); IOSurfaceLock(_surface, 0, nil); @@ -298,7 +301,7 @@ - (void)captureShot:(CMTime)frameTime //memcpy(rawData, baseAddr, totalBytes); NSMutableData * rawDataObj = nil; if (buffers.count == 0) - rawDataObj = [NSMutableData dataWithBytes:baseAddr length:totalBytes]; + rawDataObj = [[NSMutableData dataWithBytes:baseAddr length:totalBytes] retain]; else @synchronized(buffers) { rawDataObj = [buffers lastObject]; memcpy((void *)[rawDataObj bytes], baseAddr, totalBytes); @@ -380,6 +383,14 @@ - (void)setupVideoContext // Get the output file path NSString *outPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/video.mp4"]; + if (![[[NSUserDefaults standardUserDefaults] objectForKey:@"record"] boolValue]){ + NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; + [dateFormatter setDateFormat:@"MM:dd:yyyy h:mm:ss a"]; + NSString *date = [dateFormatter stringFromDate:[NSDate date]]; + NSString *outName = [NSString stringWithFormat:@"Documents/%@.mp4",date]; + outPath = [NSHomeDirectory() stringByAppendingPathComponent:outName]; + [dateFormatter release]; + } NSError *error = nil; @@ -404,10 +415,18 @@ - (void)setupVideoContext [compressionProperties setObject: AVVideoProfileLevelH264Main41 forKey: AVVideoProfileLevelKey]; // Setup output settings, Codec, Width, Height, Compression + int videowidth = _width; + int videoheight = _height; + if ([[NSUserDefaults standardUserDefaults] objectForKey:@"vidsize"]) { + if (![[[NSUserDefaults standardUserDefaults] objectForKey:@"vidsize"] boolValue]){ + videowidth /= 2; //If it's set to half-size, divide both by 2. + videoheight /= 2; + } + } NSMutableDictionary *outputSettings = [NSMutableDictionary dictionaryWithObjectsAndKeys: AVVideoCodecH264, AVVideoCodecKey, - [NSNumber numberWithInt:_width], AVVideoWidthKey, - [NSNumber numberWithInt:_height], AVVideoHeightKey, + [NSNumber numberWithInt:videowidth], AVVideoWidthKey, + [NSNumber numberWithInt:videoheight], AVVideoHeightKey, compressionProperties, AVVideoCompressionPropertiesKey, nil]; diff --git a/RecordMyScreen/headers/.DS_Store b/RecordMyScreen/headers/.DS_Store index 67221c7511c6e85f521c8a639182bb3a2e89ec5e..8c87b86833685de08415ffee0ed6aab03be56a1d 100644 GIT binary patch delta 32 ocmZoMXfc@J&&awlU^gQp>t-IN35=VsF&nZ>Y_QtQ&heKY0H)LmJpcdz delta 52 zcmZoMXfc@J&&akhU^gQp+h!i735=|q44w@BlO>pBco=UmFfeEUG4KEXn-?Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02*{fSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+qQF!XYv0007oNkld<(&| zgzyt$^TB~Yj+~QX$|DI}N)UIx*QTG(!96@Az6j@s0TlKC&J77K#`*Do2#-Sa$^Z&q zfZKx?v?+KWWyF6He-3MeAb%t?sWp%pyDcB|&Hb5>bU z(z|EKD;a&m$h(>O5-#Ap!nX?&car1C%$Yeo1$=523GZkiysK3BMnR&7&O?|pU&o08 zzN->#2j4TvFNsggsS=+Ka?|e{Iks%83)p9_!j}0GS;P_i(aA&1em)(kmGf?;v4OuH z!hW_5Ppl;rpAe{-iZAwCE!WoEZjB+~T4dFAAG+hZ-)3qq6PG(^e*MG1S)7}_ zP2+NULGVh|&zwwNSDKQR=DRDiLc+^&hHj9h#JN0A`;w4wH_p&~D@Rxwzms~;3kZ66 zI?1l%v-e&nUd5{_=T;y`PPvojmiM(4d(|BeoWmy*!nTt+=ALcK^I{=qk$Lp}&tNua zZ+81QwzY@am>o*i$}ze~F_W~8cxbpda@YI|ff$E<=-_w&yy^&_H-eHMk-xmZ0SjaS UD=okkdjJ3c07*qoM6N<$f}VzEuK)l5 literal 0 HcmV?d00001 diff --git a/RecordMyScreen/settings@2x.png b/RecordMyScreen/settings@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..39160baa6de1b253bbf871ee9f86d92ac987bb8c GIT binary patch literal 2002 zcmV;@2QB!CP)NklGU>rXN-iF-}2A1}1+1H_?RYCW|c&nrf!xQ1)Ix4X2DR5F9I&~Fw z!6+=%#pg&A4hMTzqDYxeM`$k(cyj_ zY=XSX%=bXC9Il4jVJj5Tihr;=am6xFuw|XEzd>lUuYcRq zmqYjT3ge3oX$m`x-T>!EUk@72Nf_WlLi8-DY@Hh&) zXtb+%RyaB4d|JSxz z$xK7s1KV+1au4?iT6|lo2JDgYM%WDD(%;OtJ>Y3dnz0kp)mMEUkk*l@mj@JfawvZU z<t)TQo71|EJqbIG}LKyMxy9nyN2)I(-1tV+iWxZ3@ z!0(4xP+4jE=IN?`mVNV*>l|g7<&}!3l(FD#X8_o{o=c~~P$((}tK;`m$=^klEQb$+ zdE5%KVF(lzhqOV@gY{q|c&=WD4_-d@i%}ykP#(ozf?wbd@LsC3SuGpObN_Y-AExa_ zK-W?A5EQ*7)%u~&`fd!~lb?r4(9^jt9#_FvP^;MJ`&{e{Y9!EF9c&B-f97e_k3`Q# zTLqVBUzrRaK^ZqAS7GO2bPuczDDNE`POo#Ikx`Zen>>x}eVAbHUI52K1)7zYF|eLs z_BUk{)-aLu%#tR|B&x>d_IHs1kAgC8Mh5u`xLA}W+Hw&pLp(=x8gN;%5kszyP4{k% zL+-B*MW1Cz_s_3o7}ADkSbL<*fVJytYh#uoW%jW9V41_&0Bt`m&OY{fM2V+S2I5;G*Lq(F`tH(;@fPQsAUz!(HE`KS?a! z5AKCSyASug91VBEI`HzG6l~<_xph1=e7r>0k>`P5e;V;2(J_|qU=9qkk$Y|sT+5s< zT`&z?fNbG0&o|irNd<@=_T$eV0$K6!~Ya`Hn zJhPyPmkW*5+w=Yjbu1L_Y0H8OpZD6Nmx?^~%?r?(S+R7-oLgXj&+35lvqtBRoeH+PHuKjuOwJ?m3~;MzH*q^X3#P;zPYd`o3U|a5 z+9Yi#emblVkhFjYQZg;?03&@c!CrP+9w2E!xs|v8w5xanjQ&cJ7VshzJf5|ycv)B) zb3QF#|H8Kb{)#E}@iY%Fo}br5{fsT$rXi!@MR0f&-CCRqw(Lr1W=m678`|0qMeEmB zeNO!=Vssx)8Ue*|U{AZZg%|~ z|JXA#;A&5IVMGVAf_8zJ2HpSi$J71$9;jz@Bmp>$Zi4PJH&3sn+P03QO!(9{ea!uD z`rLr4L664R!>|Lw%KVGtxzOwX8~OH@)W~JP-=SyL_Kvo}I^Ke?eix{_A^M+pwRU`W z$m9wI*K;qwgMyEO75k&W7Vxk8E6Mjglt#BT&+)w$Q|#}d{$->)yd7~KjQr_#Ei8d= zC}S_@N}+(Yf};0Nt;P zD%4#LXdpR#48~^|S07*qoM6N<$g0_0$%K!iX literal 0 HcmV?d00001 diff --git a/Settings.bundle/Root.plist b/Settings.bundle/Root.plist new file mode 100644 index 0000000..5fab773 --- /dev/null +++ b/Settings.bundle/Root.plist @@ -0,0 +1,113 @@ + + + + + PreferenceSpecifiers + + + Type + PSGroupSpecifier + Title + Recording Settings + + + Type + PSMultiValueSpecifier + Title + Record + Key + record + DefaultValue + 0 + Titles + + Screen Only + + Values + + 0 + + + + Type + PSGroupSpecifier + Title + Video Settings + + + Type + PSMultiValueSpecifier + Title + Video Size + Key + vidsize + DefaultValue + 1 + Titles + + Native + Half + + Values + + 1 + 0 + + + + Type + PSGroupSpecifier + Title + Audio Settings + + + Type + PSMultiValueSpecifier + Title + Sample Rate + Key + samplerate + DefaultValue + 44100 + Titles + + 44100 Hz + 22050 Hz + 16000 Hz + 11025 Hz + 8000 Hz + + Values + + 44100 + 22050 + 16000 + 11025 + 8000 + + + + Type + PSMultiValueSpecifier + Title + Channels + Key + channels + DefaultValue + 2 + Titles + + Mono + Stereo + + Values + + 1 + 2 + + + + StringsTable + Root + + diff --git a/Settings.bundle/en.lproj/Root.strings b/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