AC Tape Deck
BIN
.DS_Store
vendored
Normal file
676
TapeDeck.xcodeproj/project.pbxproj
Normal file
|
@ -0,0 +1,676 @@
|
|||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 52;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
BD7A5E342510173A003E992C /* day.gif in Resources */ = {isa = PBXBuildFile; fileRef = BD7A5E332510173A003E992C /* day.gif */; };
|
||||
BD7D35D72510042D00A61B6B /* night.gif in Resources */ = {isa = PBXBuildFile; fileRef = BD7D35D52510042D00A61B6B /* night.gif */; };
|
||||
BD7D35DB2510111700A61B6B /* SwiftyGif in Frameworks */ = {isa = PBXBuildFile; productRef = BD7D35DA2510111700A61B6B /* SwiftyGif */; };
|
||||
BDA060FA2447F3E6009C72CE /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDA060F92447F3E6009C72CE /* AppDelegate.swift */; };
|
||||
BDA060FC2447F3E6009C72CE /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDA060FB2447F3E6009C72CE /* SceneDelegate.swift */; };
|
||||
BDA060FE2447F3E6009C72CE /* FirstViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDA060FD2447F3E6009C72CE /* FirstViewController.swift */; };
|
||||
BDA061002447F3E6009C72CE /* SecondViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDA060FF2447F3E6009C72CE /* SecondViewController.swift */; };
|
||||
BDA061032447F3E6009C72CE /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = BDA061012447F3E6009C72CE /* Main.storyboard */; };
|
||||
BDA061052447F3F2009C72CE /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = BDA061042447F3F2009C72CE /* Assets.xcassets */; };
|
||||
BDA061082447F3F2009C72CE /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = BDA061062447F3F2009C72CE /* LaunchScreen.storyboard */; };
|
||||
BDA061132447F3F3009C72CE /* grandfatherrockTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDA061122447F3F3009C72CE /* grandfatherrockTests.swift */; };
|
||||
BDA0611E2447F3F3009C72CE /* grandfatherrockUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDA0611D2447F3F3009C72CE /* grandfatherrockUITests.swift */; };
|
||||
BDB53FCE250765A2004E9788 /* FinkHeavy.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BDB53FCC250765A1004E9788 /* FinkHeavy.ttf */; };
|
||||
BDE8138F2507422100371570 /* ThirdViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDE8138E2507422100371570 /* ThirdViewController.swift */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
BDA0610F2447F3F3009C72CE /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = BDA060EE2447F3E5009C72CE /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = BDA060F52447F3E6009C72CE;
|
||||
remoteInfo = grandfatherrock;
|
||||
};
|
||||
BDA0611A2447F3F3009C72CE /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = BDA060EE2447F3E5009C72CE /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = BDA060F52447F3E6009C72CE;
|
||||
remoteInfo = grandfatherrock;
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
BD7A5E332510173A003E992C /* day.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = day.gif; sourceTree = "<group>"; };
|
||||
BD7D35D52510042D00A61B6B /* night.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = night.gif; sourceTree = "<group>"; };
|
||||
BDA060F62447F3E6009C72CE /* Nook Music.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Nook Music.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
BDA060F92447F3E6009C72CE /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||
BDA060FB2447F3E6009C72CE /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = "<group>"; };
|
||||
BDA060FD2447F3E6009C72CE /* FirstViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FirstViewController.swift; sourceTree = "<group>"; };
|
||||
BDA060FF2447F3E6009C72CE /* SecondViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecondViewController.swift; sourceTree = "<group>"; };
|
||||
BDA061022447F3E6009C72CE /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||
BDA061042447F3F2009C72CE /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
BDA061072447F3F2009C72CE /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
BDA061092447F3F2009C72CE /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
BDA0610E2447F3F3009C72CE /* grandfatherrockTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = grandfatherrockTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
BDA061122447F3F3009C72CE /* grandfatherrockTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = grandfatherrockTests.swift; sourceTree = "<group>"; };
|
||||
BDA061142447F3F3009C72CE /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
BDA061192447F3F3009C72CE /* grandfatherrockUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = grandfatherrockUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
BDA0611D2447F3F3009C72CE /* grandfatherrockUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = grandfatherrockUITests.swift; sourceTree = "<group>"; };
|
||||
BDA0611F2447F3F3009C72CE /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
BDA0618A244826DB009C72CE /* grandfatherrock.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = grandfatherrock.entitlements; sourceTree = "<group>"; };
|
||||
BDB53FCC250765A1004E9788 /* FinkHeavy.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = FinkHeavy.ttf; sourceTree = "<group>"; };
|
||||
BDE8138E2507422100371570 /* ThirdViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThirdViewController.swift; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
BDA060F32447F3E6009C72CE /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
BD7D35DB2510111700A61B6B /* SwiftyGif in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
BDA0610B2447F3F3009C72CE /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
BDA061162447F3F3009C72CE /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
BD7D35D42510042D00A61B6B /* gifs */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
BD7A5E332510173A003E992C /* day.gif */,
|
||||
BD7D35D52510042D00A61B6B /* night.gif */,
|
||||
);
|
||||
path = gifs;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
BDA060ED2447F3E5009C72CE = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
BDA060F82447F3E6009C72CE /* grandfatherrock */,
|
||||
BDA061112447F3F3009C72CE /* grandfatherrockTests */,
|
||||
BDA0611C2447F3F3009C72CE /* grandfatherrockUITests */,
|
||||
BDA060F72447F3E6009C72CE /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
BDA060F72447F3E6009C72CE /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
BDA060F62447F3E6009C72CE /* Nook Music.app */,
|
||||
BDA0610E2447F3F3009C72CE /* grandfatherrockTests.xctest */,
|
||||
BDA061192447F3F3009C72CE /* grandfatherrockUITests.xctest */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
BDA060F82447F3E6009C72CE /* grandfatherrock */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
BDA0618A244826DB009C72CE /* grandfatherrock.entitlements */,
|
||||
BDA060F92447F3E6009C72CE /* AppDelegate.swift */,
|
||||
BDA060FB2447F3E6009C72CE /* SceneDelegate.swift */,
|
||||
BDA060FD2447F3E6009C72CE /* FirstViewController.swift */,
|
||||
BDA060FF2447F3E6009C72CE /* SecondViewController.swift */,
|
||||
BDE8138E2507422100371570 /* ThirdViewController.swift */,
|
||||
BDA061012447F3E6009C72CE /* Main.storyboard */,
|
||||
BDA061042447F3F2009C72CE /* Assets.xcassets */,
|
||||
BD7D35D42510042D00A61B6B /* gifs */,
|
||||
BDB53FCA250765A1004E9788 /* fonts */,
|
||||
BDA061062447F3F2009C72CE /* LaunchScreen.storyboard */,
|
||||
BDA061092447F3F2009C72CE /* Info.plist */,
|
||||
);
|
||||
path = grandfatherrock;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
BDA061112447F3F3009C72CE /* grandfatherrockTests */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
BDA061122447F3F3009C72CE /* grandfatherrockTests.swift */,
|
||||
BDA061142447F3F3009C72CE /* Info.plist */,
|
||||
);
|
||||
path = grandfatherrockTests;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
BDA0611C2447F3F3009C72CE /* grandfatherrockUITests */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
BDA0611D2447F3F3009C72CE /* grandfatherrockUITests.swift */,
|
||||
BDA0611F2447F3F3009C72CE /* Info.plist */,
|
||||
);
|
||||
path = grandfatherrockUITests;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
BDB53FCA250765A1004E9788 /* fonts */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
BDB53FCC250765A1004E9788 /* FinkHeavy.ttf */,
|
||||
);
|
||||
path = fonts;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
BDA060F52447F3E6009C72CE /* grandfatherrock */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = BDA061222447F3F3009C72CE /* Build configuration list for PBXNativeTarget "grandfatherrock" */;
|
||||
buildPhases = (
|
||||
BDA060F22447F3E6009C72CE /* Sources */,
|
||||
BDA060F32447F3E6009C72CE /* Frameworks */,
|
||||
BDA060F42447F3E6009C72CE /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = grandfatherrock;
|
||||
packageProductDependencies = (
|
||||
BD7D35DA2510111700A61B6B /* SwiftyGif */,
|
||||
);
|
||||
productName = grandfatherrock;
|
||||
productReference = BDA060F62447F3E6009C72CE /* Nook Music.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
BDA0610D2447F3F3009C72CE /* grandfatherrockTests */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = BDA061252447F3F3009C72CE /* Build configuration list for PBXNativeTarget "grandfatherrockTests" */;
|
||||
buildPhases = (
|
||||
BDA0610A2447F3F3009C72CE /* Sources */,
|
||||
BDA0610B2447F3F3009C72CE /* Frameworks */,
|
||||
BDA0610C2447F3F3009C72CE /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
BDA061102447F3F3009C72CE /* PBXTargetDependency */,
|
||||
);
|
||||
name = grandfatherrockTests;
|
||||
productName = grandfatherrockTests;
|
||||
productReference = BDA0610E2447F3F3009C72CE /* grandfatherrockTests.xctest */;
|
||||
productType = "com.apple.product-type.bundle.unit-test";
|
||||
};
|
||||
BDA061182447F3F3009C72CE /* grandfatherrockUITests */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = BDA061282447F3F3009C72CE /* Build configuration list for PBXNativeTarget "grandfatherrockUITests" */;
|
||||
buildPhases = (
|
||||
BDA061152447F3F3009C72CE /* Sources */,
|
||||
BDA061162447F3F3009C72CE /* Frameworks */,
|
||||
BDA061172447F3F3009C72CE /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
BDA0611B2447F3F3009C72CE /* PBXTargetDependency */,
|
||||
);
|
||||
name = grandfatherrockUITests;
|
||||
productName = grandfatherrockUITests;
|
||||
productReference = BDA061192447F3F3009C72CE /* grandfatherrockUITests.xctest */;
|
||||
productType = "com.apple.product-type.bundle.ui-testing";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
BDA060EE2447F3E5009C72CE /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastSwiftUpdateCheck = 1140;
|
||||
LastUpgradeCheck = 1200;
|
||||
ORGANIZATIONNAME = "Micah Gomez";
|
||||
TargetAttributes = {
|
||||
BDA060F52447F3E6009C72CE = {
|
||||
CreatedOnToolsVersion = 11.4.1;
|
||||
};
|
||||
BDA0610D2447F3F3009C72CE = {
|
||||
CreatedOnToolsVersion = 11.4.1;
|
||||
TestTargetID = BDA060F52447F3E6009C72CE;
|
||||
};
|
||||
BDA061182447F3F3009C72CE = {
|
||||
CreatedOnToolsVersion = 11.4.1;
|
||||
TestTargetID = BDA060F52447F3E6009C72CE;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = BDA060F12447F3E5009C72CE /* Build configuration list for PBXProject "TapeDeck" */;
|
||||
compatibilityVersion = "Xcode 9.3";
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
Base,
|
||||
);
|
||||
mainGroup = BDA060ED2447F3E5009C72CE;
|
||||
packageReferences = (
|
||||
BD7D35D92510111700A61B6B /* XCRemoteSwiftPackageReference "SwiftyGif" */,
|
||||
);
|
||||
productRefGroup = BDA060F72447F3E6009C72CE /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
BDA060F52447F3E6009C72CE /* grandfatherrock */,
|
||||
BDA0610D2447F3F3009C72CE /* grandfatherrockTests */,
|
||||
BDA061182447F3F3009C72CE /* grandfatherrockUITests */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
BDA060F42447F3E6009C72CE /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
BDA061082447F3F2009C72CE /* LaunchScreen.storyboard in Resources */,
|
||||
BDA061052447F3F2009C72CE /* Assets.xcassets in Resources */,
|
||||
BD7D35D72510042D00A61B6B /* night.gif in Resources */,
|
||||
BD7A5E342510173A003E992C /* day.gif in Resources */,
|
||||
BDA061032447F3E6009C72CE /* Main.storyboard in Resources */,
|
||||
BDB53FCE250765A2004E9788 /* FinkHeavy.ttf in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
BDA0610C2447F3F3009C72CE /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
BDA061172447F3F3009C72CE /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
BDA060F22447F3E6009C72CE /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
BDA061002447F3E6009C72CE /* SecondViewController.swift in Sources */,
|
||||
BDA060FE2447F3E6009C72CE /* FirstViewController.swift in Sources */,
|
||||
BDE8138F2507422100371570 /* ThirdViewController.swift in Sources */,
|
||||
BDA060FA2447F3E6009C72CE /* AppDelegate.swift in Sources */,
|
||||
BDA060FC2447F3E6009C72CE /* SceneDelegate.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
BDA0610A2447F3F3009C72CE /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
BDA061132447F3F3009C72CE /* grandfatherrockTests.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
BDA061152447F3F3009C72CE /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
BDA0611E2447F3F3009C72CE /* grandfatherrockUITests.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
BDA061102447F3F3009C72CE /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = BDA060F52447F3E6009C72CE /* grandfatherrock */;
|
||||
targetProxy = BDA0610F2447F3F3009C72CE /* PBXContainerItemProxy */;
|
||||
};
|
||||
BDA0611B2447F3F3009C72CE /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = BDA060F52447F3E6009C72CE /* grandfatherrock */;
|
||||
targetProxy = BDA0611A2447F3F3009C72CE /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
BDA061012447F3E6009C72CE /* Main.storyboard */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
BDA061022447F3E6009C72CE /* Base */,
|
||||
);
|
||||
name = Main.storyboard;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
BDA061062447F3F2009C72CE /* LaunchScreen.storyboard */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
BDA061072447F3F2009C72CE /* Base */,
|
||||
);
|
||||
name = LaunchScreen.storyboard;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
BDA061202447F3F3009C72CE /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 13.4;
|
||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||
MTL_FAST_MATH = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
BDA061212447F3F3009C72CE /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 13.4;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
MTL_FAST_MATH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_COMPILATION_MODE = wholemodule;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-O";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
BDA061232447F3F3009C72CE /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CODE_SIGN_ENTITLEMENTS = grandfatherrock/grandfatherrock.entitlements;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 4;
|
||||
DEVELOPMENT_TEAM = PRBH2T6668;
|
||||
INFOPLIST_FILE = grandfatherrock/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = dev.mpg13.grandfatherrock;
|
||||
PRODUCT_NAME = "Nook Music";
|
||||
SUPPORTS_MACCATALYST = NO;
|
||||
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
BDA061242447F3F3009C72CE /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CODE_SIGN_ENTITLEMENTS = grandfatherrock/grandfatherrock.entitlements;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 4;
|
||||
DEVELOPMENT_TEAM = PRBH2T6668;
|
||||
INFOPLIST_FILE = grandfatherrock/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = dev.mpg13.grandfatherrock;
|
||||
PRODUCT_NAME = "Nook Music";
|
||||
SUPPORTS_MACCATALYST = NO;
|
||||
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
BDA061262447F3F3009C72CE /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
DEVELOPMENT_TEAM = PRBH2T6668;
|
||||
INFOPLIST_FILE = grandfatherrockTests/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 13.4;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@loader_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = dev.mpg13.grandfatherrockTests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/grandfatherrock.app/grandfatherrock";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
BDA061272447F3F3009C72CE /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
DEVELOPMENT_TEAM = PRBH2T6668;
|
||||
INFOPLIST_FILE = grandfatherrockTests/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 13.4;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@loader_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = dev.mpg13.grandfatherrockTests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/grandfatherrock.app/grandfatherrock";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
BDA061292447F3F3009C72CE /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
DEVELOPMENT_TEAM = PRBH2T6668;
|
||||
INFOPLIST_FILE = grandfatherrockUITests/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@loader_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = dev.mpg13.grandfatherrockUITests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
TEST_TARGET_NAME = grandfatherrock;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
BDA0612A2447F3F3009C72CE /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
DEVELOPMENT_TEAM = PRBH2T6668;
|
||||
INFOPLIST_FILE = grandfatherrockUITests/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@loader_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = dev.mpg13.grandfatherrockUITests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
TEST_TARGET_NAME = grandfatherrock;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
BDA060F12447F3E5009C72CE /* Build configuration list for PBXProject "TapeDeck" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
BDA061202447F3F3009C72CE /* Debug */,
|
||||
BDA061212447F3F3009C72CE /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
BDA061222447F3F3009C72CE /* Build configuration list for PBXNativeTarget "grandfatherrock" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
BDA061232447F3F3009C72CE /* Debug */,
|
||||
BDA061242447F3F3009C72CE /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
BDA061252447F3F3009C72CE /* Build configuration list for PBXNativeTarget "grandfatherrockTests" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
BDA061262447F3F3009C72CE /* Debug */,
|
||||
BDA061272447F3F3009C72CE /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
BDA061282447F3F3009C72CE /* Build configuration list for PBXNativeTarget "grandfatherrockUITests" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
BDA061292447F3F3009C72CE /* Debug */,
|
||||
BDA0612A2447F3F3009C72CE /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
|
||||
/* Begin XCRemoteSwiftPackageReference section */
|
||||
BD7D35D92510111700A61B6B /* XCRemoteSwiftPackageReference "SwiftyGif" */ = {
|
||||
isa = XCRemoteSwiftPackageReference;
|
||||
repositoryURL = "https://github.com/kirualex/SwiftyGif.git";
|
||||
requirement = {
|
||||
kind = upToNextMajorVersion;
|
||||
minimumVersion = 5.3.0;
|
||||
};
|
||||
};
|
||||
/* End XCRemoteSwiftPackageReference section */
|
||||
|
||||
/* Begin XCSwiftPackageProductDependency section */
|
||||
BD7D35DA2510111700A61B6B /* SwiftyGif */ = {
|
||||
isa = XCSwiftPackageProductDependency;
|
||||
package = BD7D35D92510111700A61B6B /* XCRemoteSwiftPackageReference "SwiftyGif" */;
|
||||
productName = SwiftyGif;
|
||||
};
|
||||
/* End XCSwiftPackageProductDependency section */
|
||||
};
|
||||
rootObject = BDA060EE2447F3E5009C72CE /* Project object */;
|
||||
}
|
7
TapeDeck.xcodeproj/project.xcworkspace/contents.xcworkspacedata
generated
Normal file
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "self:">
|
||||
</FileRef>
|
||||
</Workspace>
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>IDEDidComputeMac32BitWarning</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"object": {
|
||||
"pins": [
|
||||
{
|
||||
"package": "SwiftyGif",
|
||||
"repositoryURL": "https://github.com/kirualex/SwiftyGif.git",
|
||||
"state": {
|
||||
"branch": null,
|
||||
"revision": "420d12cba8338b03993f73a72c1f6b70d5273cf2",
|
||||
"version": "5.3.0"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"version": 1
|
||||
}
|
BIN
TapeDeck.xcodeproj/project.xcworkspace/xcuserdata/micahgomez.xcuserdatad/UserInterfaceState.xcuserstate
generated
Normal file
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>SchemeUserState</key>
|
||||
<dict>
|
||||
<key>grandfatherrock.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
10
TapeDeck.xcworkspace/contents.xcworkspacedata
generated
Normal file
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "group:TapeDeck.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:Pods/Pods.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
BIN
grandfatherrock/.DS_Store
vendored
Normal file
37
grandfatherrock/AppDelegate.swift
Normal file
|
@ -0,0 +1,37 @@
|
|||
//
|
||||
// AppDelegate.swift
|
||||
// grandfatherrock
|
||||
//
|
||||
// Created by Micah Gomez on 4/15/20.
|
||||
// Copyright © 2020 Micah Gomez. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
@UIApplicationMain
|
||||
class AppDelegate: UIResponder, UIApplicationDelegate {
|
||||
|
||||
|
||||
|
||||
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
|
||||
// Override point for customization after application launch.
|
||||
return true
|
||||
}
|
||||
|
||||
// MARK: UISceneSession Lifecycle
|
||||
|
||||
func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
|
||||
// Called when a new scene session is being created.
|
||||
// Use this method to select a configuration to create the new scene with.
|
||||
return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
|
||||
}
|
||||
|
||||
func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {
|
||||
// Called when the user discards a scene session.
|
||||
// If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
|
||||
// Use this method to release any resources that were specific to the discarded scenes, as they will not return.
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
BIN
grandfatherrock/Assets.xcassets/.DS_Store
vendored
Normal file
BIN
grandfatherrock/Assets.xcassets/ACBackgroundDay.imageset/ACBackgroundNightLarge-1.png
vendored
Normal file
After Width: | Height: | Size: 5.3 KiB |
BIN
grandfatherrock/Assets.xcassets/ACBackgroundDay.imageset/ACBackgroundNightLarge-2.png
vendored
Normal file
After Width: | Height: | Size: 5.3 KiB |
BIN
grandfatherrock/Assets.xcassets/ACBackgroundDay.imageset/ACBackgroundNightLarge.png
vendored
Normal file
After Width: | Height: | Size: 5.3 KiB |
23
grandfatherrock/Assets.xcassets/ACBackgroundDay.imageset/Contents.json
vendored
Normal file
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "ACBackgroundNightLarge.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "ACBackgroundNightLarge-1.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "ACBackgroundNightLarge-2.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
BIN
grandfatherrock/Assets.xcassets/ACBackgroundNight.imageset/ACBackgroundDayLarge-1.png
vendored
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
grandfatherrock/Assets.xcassets/ACBackgroundNight.imageset/ACBackgroundDayLarge-2.png
vendored
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
grandfatherrock/Assets.xcassets/ACBackgroundNight.imageset/ACBackgroundDayLarge.png
vendored
Normal file
After Width: | Height: | Size: 11 KiB |
23
grandfatherrock/Assets.xcassets/ACBackgroundNight.imageset/Contents.json
vendored
Normal file
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "ACBackgroundDayLarge.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "ACBackgroundDayLarge-1.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "ACBackgroundDayLarge-2.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
122
grandfatherrock/Assets.xcassets/AppIcon.appiconset/Contents.json
Normal file
|
@ -0,0 +1,122 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "Icon-App-20x20@2x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "20x20"
|
||||
},
|
||||
{
|
||||
"filename" : "Icon-App-20x20@3x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "20x20"
|
||||
},
|
||||
{
|
||||
"filename" : "Icon-App-29x29@1x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "1x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"filename" : "Icon-App-29x29@2x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"filename" : "Icon-App-29x29@3x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"filename" : "Icon-App-40x40@2x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "40x40"
|
||||
},
|
||||
{
|
||||
"filename" : "Icon-App-40x40@3x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "40x40"
|
||||
},
|
||||
{
|
||||
"filename" : "Icon-App-60x60@2x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "60x60"
|
||||
},
|
||||
{
|
||||
"filename" : "Icon-App-60x60@3x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "60x60"
|
||||
},
|
||||
{
|
||||
"filename" : "Icon-App-20x20@1x.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "20x20"
|
||||
},
|
||||
{
|
||||
"filename" : "Icon-App-20x20@2x.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "20x20"
|
||||
},
|
||||
{
|
||||
"filename" : "Icon-App-29x29@1x.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"filename" : "Icon-App-29x29@2x.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"filename" : "Icon-App-40x40@1x.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "40x40"
|
||||
},
|
||||
{
|
||||
"filename" : "Icon-App-40x40@2x.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "40x40"
|
||||
},
|
||||
{
|
||||
"filename" : "Icon-App-76x76@1x.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "76x76"
|
||||
},
|
||||
{
|
||||
"filename" : "Icon-App-76x76@2x.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "76x76"
|
||||
},
|
||||
{
|
||||
"filename" : "Icon-App-83.5x83.5@2x.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "83.5x83.5"
|
||||
},
|
||||
{
|
||||
"filename" : "ItunesArtwork@2x.png",
|
||||
"idiom" : "ios-marketing",
|
||||
"scale" : "1x",
|
||||
"size" : "1024x1024"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 953 B |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 5.4 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 5.1 KiB |
After Width: | Height: | Size: 9.3 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 8.2 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 7.5 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 372 KiB |
6
grandfatherrock/Assets.xcassets/Contents.json
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
23
grandfatherrock/Assets.xcassets/LaunchImage.imageset/Contents.json
vendored
Normal file
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "output-onlineimagetools.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "output-onlineimagetools-1.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "output-onlineimagetools-2.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
BIN
grandfatherrock/Assets.xcassets/LaunchImage.imageset/output-onlineimagetools-1.png
vendored
Normal file
After Width: | Height: | Size: 931 KiB |
BIN
grandfatherrock/Assets.xcassets/LaunchImage.imageset/output-onlineimagetools-2.png
vendored
Normal file
After Width: | Height: | Size: 931 KiB |
BIN
grandfatherrock/Assets.xcassets/LaunchImage.imageset/output-onlineimagetools.png
vendored
Normal file
After Width: | Height: | Size: 931 KiB |
23
grandfatherrock/Assets.xcassets/grass.imageset/Contents.json
vendored
Normal file
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "Screen Shot 2020-09-13 at 6.28.42 PM.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "Screen Shot 2020-09-13 at 6.28.42 PM-1.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "Screen Shot 2020-09-13 at 6.28.42 PM-2.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
BIN
grandfatherrock/Assets.xcassets/grass.imageset/Screen Shot 2020-09-13 at 6.28.42 PM-1.png
vendored
Normal file
After Width: | Height: | Size: 24 KiB |
BIN
grandfatherrock/Assets.xcassets/grass.imageset/Screen Shot 2020-09-13 at 6.28.42 PM-2.png
vendored
Normal file
After Width: | Height: | Size: 24 KiB |
BIN
grandfatherrock/Assets.xcassets/grass.imageset/Screen Shot 2020-09-13 at 6.28.42 PM.png
vendored
Normal file
After Width: | Height: | Size: 24 KiB |
23
grandfatherrock/Assets.xcassets/pause.imageset/Contents.json
vendored
Normal file
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "woodpause-2.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "woodpause-1.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "woodpause.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
BIN
grandfatherrock/Assets.xcassets/pause.imageset/woodpause-1.png
vendored
Normal file
After Width: | Height: | Size: 1.2 MiB |
BIN
grandfatherrock/Assets.xcassets/pause.imageset/woodpause-2.png
vendored
Normal file
After Width: | Height: | Size: 1.2 MiB |
BIN
grandfatherrock/Assets.xcassets/pause.imageset/woodpause.png
vendored
Normal file
After Width: | Height: | Size: 1.2 MiB |
23
grandfatherrock/Assets.xcassets/play.imageset/Contents.json
vendored
Normal file
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "woodplay-2.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "woodplay-1.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "woodplay.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
BIN
grandfatherrock/Assets.xcassets/play.imageset/woodplay-1.png
vendored
Normal file
After Width: | Height: | Size: 1.1 MiB |
BIN
grandfatherrock/Assets.xcassets/play.imageset/woodplay-2.png
vendored
Normal file
After Width: | Height: | Size: 1.1 MiB |
BIN
grandfatherrock/Assets.xcassets/play.imageset/woodplay.png
vendored
Normal file
After Width: | Height: | Size: 1.1 MiB |
47
grandfatherrock/Base.lproj/LaunchScreen.storyboard
Normal file
|
@ -0,0 +1,47 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="17154" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
|
||||
<device id="retina4_7" orientation="portrait" appearance="light"/>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17124"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="System colors in document resources" minToolsVersion="11.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--View Controller-->
|
||||
<scene sceneID="EHf-IW-A2E">
|
||||
<objects>
|
||||
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="LaunchImage" translatesAutoresizingMaskIntoConstraints="NO" id="erM-YB-Vzk">
|
||||
<rect key="frame" x="123.5" y="269.5" width="128" height="128"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" secondItem="erM-YB-Vzk" secondAttribute="height" multiplier="1:1" id="0TT-ZM-7es"/>
|
||||
<constraint firstAttribute="width" constant="128" id="xCb-tz-RTW"/>
|
||||
</constraints>
|
||||
</imageView>
|
||||
</subviews>
|
||||
<viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
|
||||
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
|
||||
<constraints>
|
||||
<constraint firstItem="erM-YB-Vzk" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="9Sw-2e-l2R"/>
|
||||
<constraint firstItem="erM-YB-Vzk" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="Mtq-Xq-8oK"/>
|
||||
</constraints>
|
||||
</view>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="52" y="374.66266866566718"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
<resources>
|
||||
<image name="LaunchImage" width="768" height="768"/>
|
||||
<systemColor name="systemBackgroundColor">
|
||||
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</systemColor>
|
||||
</resources>
|
||||
</document>
|
393
grandfatherrock/Base.lproj/Main.storyboard
Normal file
|
@ -0,0 +1,393 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="17154" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="49e-Tb-3d3">
|
||||
<device id="retina4_0" orientation="portrait" appearance="light"/>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17124"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="System colors in document resources" minToolsVersion="11.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<customFonts key="customFonts">
|
||||
<array key="FinkHeavy.ttf">
|
||||
<string>FinkHeavy</string>
|
||||
</array>
|
||||
</customFonts>
|
||||
<scenes>
|
||||
<!--Home-->
|
||||
<scene sceneID="hNz-n2-bh7">
|
||||
<objects>
|
||||
<viewController id="9pv-A4-QxB" customClass="FirstViewController" customModule="Nook_Music" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="tsR-hK-woN">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="1nc-vR-sG8">
|
||||
<rect key="frame" x="-1" y="0.0" width="320" height="519"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</view>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="ACBackgroundDay" translatesAutoresizingMaskIntoConstraints="NO" id="Ujw-y3-bt3">
|
||||
<rect key="frame" x="-2" y="433" width="324" height="86"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" secondItem="Ujw-y3-bt3" secondAttribute="height" multiplier="64:17" id="d12-4g-usi"/>
|
||||
</constraints>
|
||||
</imageView>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Nou-CB-qnJ">
|
||||
<rect key="frame" x="95" y="195" width="130" height="129"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="130" id="1c8-JO-es0"/>
|
||||
<constraint firstAttribute="width" secondItem="Nou-CB-qnJ" secondAttribute="height" multiplier="1:1" id="3mw-Za-8Hw"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="50"/>
|
||||
<color key="tintColor" red="0.86256664989999998" green="0.69524472950000005" blue="0.2422021627" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<state key="normal" backgroundImage="play.circle" catalog="system"/>
|
||||
<connections>
|
||||
<action selector="play:" destination="9pv-A4-QxB" eventType="touchUpInside" id="3Tt-QE-VYp"/>
|
||||
</connections>
|
||||
</button>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="hh:mm am" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ERT-d4-fi5">
|
||||
<rect key="frame" x="8" y="20" width="304" height="100"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="100" id="F3L-jt-5KI"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" name="FinkHeavy" family="FinkHeavy" pointSize="64"/>
|
||||
<color key="textColor" red="0.86256664989999998" green="0.69524472950000005" blue="0.2422021627" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="gBq-iQ-6kU">
|
||||
<rect key="frame" x="8" y="128" width="304" height="36"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="36" id="bRW-kw-OkP"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" name="FinkHeavy" family="FinkHeavy" pointSize="18"/>
|
||||
<color key="textColor" red="0.86256664989999998" green="0.69524472950000005" blue="0.2422021627" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<viewLayoutGuide key="safeArea" id="PQr-Ze-W5v"/>
|
||||
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="trailing" secondItem="1nc-vR-sG8" secondAttribute="trailing" id="2Vn-Qs-7Nb"/>
|
||||
<constraint firstItem="Nou-CB-qnJ" firstAttribute="centerY" secondItem="tsR-hK-woN" secondAttribute="centerY" id="78a-Pt-jNF"/>
|
||||
<constraint firstItem="1nc-vR-sG8" firstAttribute="leading" secondItem="tsR-hK-woN" secondAttribute="leading" id="B9F-vB-YN1"/>
|
||||
<constraint firstItem="PQr-Ze-W5v" firstAttribute="trailing" secondItem="ERT-d4-fi5" secondAttribute="trailing" constant="8" id="BuE-zP-hu9"/>
|
||||
<constraint firstAttribute="bottom" secondItem="1nc-vR-sG8" secondAttribute="bottom" id="D6C-6f-D6F"/>
|
||||
<constraint firstItem="ERT-d4-fi5" firstAttribute="leading" secondItem="PQr-Ze-W5v" secondAttribute="leading" constant="8" id="IuE-ro-63E"/>
|
||||
<constraint firstItem="Ujw-y3-bt3" firstAttribute="bottom" secondItem="PQr-Ze-W5v" secondAttribute="bottom" id="M3J-pn-Sam"/>
|
||||
<constraint firstItem="Ujw-y3-bt3" firstAttribute="leading" secondItem="PQr-Ze-W5v" secondAttribute="leading" constant="-2" id="M4e-yJ-sli"/>
|
||||
<constraint firstItem="gBq-iQ-6kU" firstAttribute="trailing" secondItem="ERT-d4-fi5" secondAttribute="trailing" id="Qlw-5S-SBe"/>
|
||||
<constraint firstItem="ERT-d4-fi5" firstAttribute="top" secondItem="PQr-Ze-W5v" secondAttribute="top" constant="20" id="abF-4H-3Jo"/>
|
||||
<constraint firstItem="gBq-iQ-6kU" firstAttribute="leading" secondItem="ERT-d4-fi5" secondAttribute="leading" id="e83-8N-8nC"/>
|
||||
<constraint firstItem="Nou-CB-qnJ" firstAttribute="centerX" secondItem="tsR-hK-woN" secondAttribute="centerX" id="iDP-6C-9Nk"/>
|
||||
<constraint firstItem="gBq-iQ-6kU" firstAttribute="top" secondItem="ERT-d4-fi5" secondAttribute="bottom" constant="8" symbolic="YES" id="suB-Xs-y8e"/>
|
||||
<constraint firstItem="1nc-vR-sG8" firstAttribute="top" secondItem="tsR-hK-woN" secondAttribute="top" id="uQw-4j-WKL"/>
|
||||
<constraint firstItem="Ujw-y3-bt3" firstAttribute="trailing" secondItem="PQr-Ze-W5v" secondAttribute="trailing" constant="2" id="zIw-Ko-SKq"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<tabBarItem key="tabBarItem" title="Home" image="play.fill" catalog="system" id="acW-dT-cKf"/>
|
||||
<connections>
|
||||
<outlet property="PlayButtonSize" destination="1c8-JO-es0" id="aFW-tJ-O5u"/>
|
||||
<outlet property="controlButton" destination="Nou-CB-qnJ" id="s10-cM-NWa"/>
|
||||
<outlet property="gradientView" destination="1nc-vR-sG8" id="bJA-Q5-DBR"/>
|
||||
<outlet property="sceneryImageView" destination="Ujw-y3-bt3" id="zJN-5h-eRp"/>
|
||||
<outlet property="songLabel" destination="gBq-iQ-6kU" id="SyO-qx-0Rf"/>
|
||||
<outlet property="timeLabel" destination="ERT-d4-fi5" id="pOH-To-ihA"/>
|
||||
</connections>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="W5J-7L-Pyd" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="748.125" y="-321.12676056338029"/>
|
||||
</scene>
|
||||
<!--Select Music-->
|
||||
<scene sceneID="wg7-f3-ORb">
|
||||
<objects>
|
||||
<viewController title="Select Music" id="8rJ-Kc-sve" customClass="SecondViewController" customModule="Nook_Music" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="QS5-Rx-YEW">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="MfW-5R-IkK" userLabel="Gradient View">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="519"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</view>
|
||||
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="EyG-9P-mxm">
|
||||
<rect key="frame" x="16" y="47" width="288" height="392"/>
|
||||
<color key="backgroundColor" systemColor="systemFillColor"/>
|
||||
<prototypes>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleAspectFit" insetsLayoutMarginsFromSafeArea="NO" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="hourcell" rowHeight="80" id="4WK-Bk-wob" customClass="hourDataCell" customModule="Nook_Music" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="28" width="288" height="80"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="4WK-Bk-wob" id="zgb-be-Y4R">
|
||||
<rect key="frame" x="0.0" y="0.0" width="288" height="80"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" insetsLayoutMarginsFromSafeArea="NO" text="Subtitle" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2R2-5b-J2i">
|
||||
<rect key="frame" x="16" y="51" width="256" height="17"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="17" id="ceH-gs-wP7"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" name="FinkHeavy" family="FinkHeavy" pointSize="17"/>
|
||||
<color key="textColor" red="0.86256664989999998" green="0.69524472950000005" blue="0.2422021627" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" insetsLayoutMarginsFromSafeArea="NO" text="Title" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="TnY-SL-DcE">
|
||||
<rect key="frame" x="16" y="12" width="256" height="31"/>
|
||||
<fontDescription key="fontDescription" name="FinkHeavy" family="FinkHeavy" pointSize="32"/>
|
||||
<color key="textColor" red="0.86256664989999998" green="0.69524472950000005" blue="0.2422021627" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="TnY-SL-DcE" firstAttribute="top" secondItem="zgb-be-Y4R" secondAttribute="top" constant="12" id="7oj-qJ-yMk"/>
|
||||
<constraint firstItem="2R2-5b-J2i" firstAttribute="leading" secondItem="TnY-SL-DcE" secondAttribute="leading" id="Tnu-dC-vta"/>
|
||||
<constraint firstAttribute="bottom" secondItem="2R2-5b-J2i" secondAttribute="bottom" constant="12" id="X65-MT-lRF"/>
|
||||
<constraint firstItem="TnY-SL-DcE" firstAttribute="trailing" secondItem="zgb-be-Y4R" secondAttribute="trailingMargin" id="fU6-5L-hIZ"/>
|
||||
<constraint firstItem="TnY-SL-DcE" firstAttribute="leading" secondItem="zgb-be-Y4R" secondAttribute="leadingMargin" id="pXl-VA-AsQ"/>
|
||||
<constraint firstItem="2R2-5b-J2i" firstAttribute="top" secondItem="TnY-SL-DcE" secondAttribute="bottom" constant="8" symbolic="YES" id="rGC-Xp-zFD"/>
|
||||
<constraint firstItem="2R2-5b-J2i" firstAttribute="trailing" secondItem="TnY-SL-DcE" secondAttribute="trailing" id="yHY-hS-Ebe"/>
|
||||
</constraints>
|
||||
</tableViewCellContentView>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<inset key="separatorInset" minX="15" minY="0.0" maxX="15" maxY="0.0"/>
|
||||
<connections>
|
||||
<outlet property="hourLabel" destination="TnY-SL-DcE" id="31a-F7-XYW"/>
|
||||
<outlet property="songLabel" destination="2R2-5b-J2i" id="S8P-g3-e5g"/>
|
||||
</connections>
|
||||
</tableViewCell>
|
||||
</prototypes>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
|
||||
<integer key="value" value="16"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</tableView>
|
||||
<segmentedControl opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" translatesAutoresizingMaskIntoConstraints="NO" id="tNe-0A-XZP">
|
||||
<rect key="frame" x="16" y="8" width="288" height="32"/>
|
||||
<segments>
|
||||
<segment title="First"/>
|
||||
<segment title="Second"/>
|
||||
<segment title="Third"/>
|
||||
<segment title="Fourth"/>
|
||||
<segment title="Fifth"/>
|
||||
</segments>
|
||||
<color key="selectedSegmentTintColor" systemColor="systemFillColor"/>
|
||||
<connections>
|
||||
<action selector="selectListControlChanged:" destination="8rJ-Kc-sve" eventType="valueChanged" id="5tP-hy-40Y"/>
|
||||
</connections>
|
||||
</segmentedControl>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="vLK-eh-BHE">
|
||||
<rect key="frame" x="16" y="459" width="288" height="40"/>
|
||||
<fontDescription key="fontDescription" name="FinkHeavy" family="FinkHeavy" pointSize="24"/>
|
||||
<color key="tintColor" red="0.86256664989999998" green="0.69524472950000005" blue="0.2422021627" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<state key="normal" title="Developer Information">
|
||||
<color key="titleShadowColor" systemColor="labelColor"/>
|
||||
</state>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="size" keyPath="layer.shadowOffset">
|
||||
<size key="value" width="0.0" height="0.0"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="layer.shadowOpacity">
|
||||
<integer key="value" value="1"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
<connections>
|
||||
<action selector="visitWebsite:" destination="8rJ-Kc-sve" eventType="touchUpInside" id="IDz-Ml-7iY"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<viewLayoutGuide key="safeArea" id="O1u-W8-tvY"/>
|
||||
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
|
||||
<constraints>
|
||||
<constraint firstItem="EyG-9P-mxm" firstAttribute="leading" secondItem="tNe-0A-XZP" secondAttribute="leading" id="0Ug-kD-Es8"/>
|
||||
<constraint firstItem="O1u-W8-tvY" firstAttribute="trailing" secondItem="tNe-0A-XZP" secondAttribute="trailing" constant="16" id="7D2-6v-kz9"/>
|
||||
<constraint firstItem="EyG-9P-mxm" firstAttribute="trailing" secondItem="tNe-0A-XZP" secondAttribute="trailing" id="D5N-RQ-J49"/>
|
||||
<constraint firstItem="vLK-eh-BHE" firstAttribute="leading" secondItem="tNe-0A-XZP" secondAttribute="leading" id="MYc-UO-KEr"/>
|
||||
<constraint firstItem="EyG-9P-mxm" firstAttribute="top" secondItem="tNe-0A-XZP" secondAttribute="bottom" constant="8" id="Y8x-0r-NO8"/>
|
||||
<constraint firstItem="tNe-0A-XZP" firstAttribute="leading" secondItem="O1u-W8-tvY" secondAttribute="leading" constant="16" id="ZzX-JZ-R7L"/>
|
||||
<constraint firstItem="tNe-0A-XZP" firstAttribute="top" secondItem="O1u-W8-tvY" secondAttribute="top" constant="8" id="cBr-Ja-CsG"/>
|
||||
<constraint firstItem="vLK-eh-BHE" firstAttribute="bottom" secondItem="O1u-W8-tvY" secondAttribute="bottom" constant="-20" id="imQ-3z-Lky"/>
|
||||
<constraint firstItem="vLK-eh-BHE" firstAttribute="trailing" secondItem="tNe-0A-XZP" secondAttribute="trailing" id="jKU-me-vte"/>
|
||||
<constraint firstItem="vLK-eh-BHE" firstAttribute="top" secondItem="EyG-9P-mxm" secondAttribute="bottom" constant="20" id="lRh-DA-wzr"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<tabBarItem key="tabBarItem" title="Select Music" image="music.note.list" catalog="system" id="cPa-gy-q4n"/>
|
||||
<connections>
|
||||
<outlet property="gradientView" destination="MfW-5R-IkK" id="2mB-cs-cXs"/>
|
||||
<outlet property="hoursTable" destination="EyG-9P-mxm" id="nKa-0x-NrF"/>
|
||||
<outlet property="selectListControl" destination="tNe-0A-XZP" id="Y9A-1K-Qj9"/>
|
||||
<segue destination="8LK-WS-C3a" kind="presentation" modalPresentationStyle="automatic" id="4kl-sn-3de"/>
|
||||
</connections>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="4Nw-L8-lE0" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="748.125" y="359.15492957746477"/>
|
||||
</scene>
|
||||
<!--Tab Bar Controller-->
|
||||
<scene sceneID="yl2-sM-qoP">
|
||||
<objects>
|
||||
<tabBarController id="49e-Tb-3d3" sceneMemberID="viewController">
|
||||
<tabBar key="tabBar" contentMode="scaleToFill" barStyle="black" translucent="NO" backgroundImage="grass" itemPositioning="fill" id="W28-zg-YXA">
|
||||
<rect key="frame" x="0.0" y="975" width="768" height="49"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<color key="tintColor" red="0.86256664989999998" green="0.69524472950000005" blue="0.2422021627" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<color key="selectedImageTintColor" red="0.86256664989999998" green="0.69524472950000005" blue="0.2422021627" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</tabBar>
|
||||
<connections>
|
||||
<segue destination="9pv-A4-QxB" kind="relationship" relationship="viewControllers" id="u7Y-xg-7CH"/>
|
||||
<segue destination="8rJ-Kc-sve" kind="relationship" relationship="viewControllers" id="lzU-1b-eKA"/>
|
||||
</connections>
|
||||
</tabBarController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="HuB-VB-40B" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="0.0" y="0.0"/>
|
||||
</scene>
|
||||
<!--Information-->
|
||||
<scene sceneID="jKA-ec-7mv">
|
||||
<objects>
|
||||
<viewController storyboardIdentifier="ThirdViewController" title="Information" useStoryboardIdentifierAsRestorationIdentifier="YES" id="8LK-WS-C3a" customClass="ThirdViewController" customModule="Nook_Music" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="uzG-eo-7Z1">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="SvO-8B-YAs">
|
||||
<rect key="frame" x="16" y="133" width="288" height="50"/>
|
||||
<color key="backgroundColor" white="0.66666666669999997" alpha="0.40000000000000002" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="50" id="Ovh-Gj-aeg"/>
|
||||
</constraints>
|
||||
<color key="tintColor" systemColor="labelColor"/>
|
||||
<state key="normal" title="Developer Website"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
|
||||
<integer key="value" value="16"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
<connections>
|
||||
<action selector="websiteButton:" destination="8LK-WS-C3a" eventType="touchUpInside" id="hj9-mu-r8z"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="gD8-gD-kvG">
|
||||
<rect key="frame" x="16" y="191" width="288" height="50"/>
|
||||
<color key="backgroundColor" white="0.66666666669999997" alpha="0.40000000000000002" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="50" id="86M-fp-v4h"/>
|
||||
</constraints>
|
||||
<color key="tintColor" systemColor="labelColor"/>
|
||||
<state key="normal" title="Support"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
|
||||
<integer key="value" value="16"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
<connections>
|
||||
<action selector="supportEmail:" destination="8LK-WS-C3a" eventType="touchUpInside" id="VSU-7w-Lre"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="7aC-B4-rXp">
|
||||
<rect key="frame" x="16" y="307" width="288" height="50"/>
|
||||
<color key="backgroundColor" white="0.66666666669999997" alpha="0.40000000000000002" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="50" id="5vv-SB-MDJ"/>
|
||||
</constraints>
|
||||
<color key="tintColor" systemColor="labelColor"/>
|
||||
<state key="normal" title="Medium Tip ($2.99)"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
|
||||
<integer key="value" value="16"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
<connections>
|
||||
<action selector="mediumTipButton:" destination="8LK-WS-C3a" eventType="touchUpInside" id="MGK-3n-WVP"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="11I-Jn-Iz5">
|
||||
<rect key="frame" x="16" y="249" width="288" height="50"/>
|
||||
<color key="backgroundColor" white="0.66666666669999997" alpha="0.40000000000000002" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="50" id="CNG-36-g6T"/>
|
||||
</constraints>
|
||||
<color key="tintColor" systemColor="labelColor"/>
|
||||
<state key="normal" title="Small Tip ($0.99)"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
|
||||
<integer key="value" value="16"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
<connections>
|
||||
<action selector="smallTipButton:" destination="8LK-WS-C3a" eventType="touchUpInside" id="0wn-bB-u54"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="GLx-A2-QUQ">
|
||||
<rect key="frame" x="16" y="365" width="288" height="50"/>
|
||||
<color key="backgroundColor" white="0.66666666669999997" alpha="0.40000000000000002" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="50" id="p0w-nB-MDa"/>
|
||||
</constraints>
|
||||
<color key="tintColor" systemColor="labelColor"/>
|
||||
<state key="normal" title="Large Tip ($4.99)"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
|
||||
<integer key="value" value="16"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
<connections>
|
||||
<action selector="largeTipButton:" destination="8LK-WS-C3a" eventType="touchUpInside" id="dQn-0b-voB"/>
|
||||
</connections>
|
||||
</button>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" lineBreakMode="wordWrap" numberOfLines="5" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="8BV-wp-YO2">
|
||||
<rect key="frame" x="20" y="423" width="280" height="43"/>
|
||||
<string key="text">Everything in AC Tape Deck is entirely free. Tips are welcome but not expected, and are not required to use any features of the app.</string>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="12"/>
|
||||
<nil key="textColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<viewLayoutGuide key="safeArea" id="Qng-vH-mPk"/>
|
||||
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
|
||||
<constraints>
|
||||
<constraint firstItem="gD8-gD-kvG" firstAttribute="top" secondItem="SvO-8B-YAs" secondAttribute="bottom" constant="8" symbolic="YES" id="6Kl-jm-0xO"/>
|
||||
<constraint firstItem="Qng-vH-mPk" firstAttribute="trailing" secondItem="SvO-8B-YAs" secondAttribute="trailing" constant="16" id="FNp-wP-MqG"/>
|
||||
<constraint firstItem="8BV-wp-YO2" firstAttribute="top" secondItem="GLx-A2-QUQ" secondAttribute="bottom" constant="8" symbolic="YES" id="JIW-Fd-Rao"/>
|
||||
<constraint firstItem="Qng-vH-mPk" firstAttribute="trailing" secondItem="7aC-B4-rXp" secondAttribute="trailing" constant="16" id="MWS-Gk-aGc"/>
|
||||
<constraint firstItem="Qng-vH-mPk" firstAttribute="trailing" secondItem="gD8-gD-kvG" secondAttribute="trailing" constant="16" id="MZO-QU-Llr"/>
|
||||
<constraint firstItem="11I-Jn-Iz5" firstAttribute="leading" secondItem="Qng-vH-mPk" secondAttribute="leading" constant="16" id="T9p-4Y-zLx"/>
|
||||
<constraint firstItem="8BV-wp-YO2" firstAttribute="leading" secondItem="Qng-vH-mPk" secondAttribute="leading" constant="20" id="VP9-am-I43"/>
|
||||
<constraint firstItem="SvO-8B-YAs" firstAttribute="leading" secondItem="Qng-vH-mPk" secondAttribute="leading" constant="16" id="bn2-fl-3tf"/>
|
||||
<constraint firstItem="7aC-B4-rXp" firstAttribute="top" secondItem="11I-Jn-Iz5" secondAttribute="bottom" constant="8" symbolic="YES" id="boZ-R0-Egc"/>
|
||||
<constraint firstItem="Qng-vH-mPk" firstAttribute="trailing" secondItem="11I-Jn-Iz5" secondAttribute="trailing" constant="16" id="ca1-LO-hvh"/>
|
||||
<constraint firstItem="Qng-vH-mPk" firstAttribute="trailing" secondItem="GLx-A2-QUQ" secondAttribute="trailing" constant="16" id="cq5-VN-aQn"/>
|
||||
<constraint firstItem="GLx-A2-QUQ" firstAttribute="top" secondItem="7aC-B4-rXp" secondAttribute="bottom" constant="8" symbolic="YES" id="d1I-xc-Hch"/>
|
||||
<constraint firstItem="11I-Jn-Iz5" firstAttribute="centerY" secondItem="uzG-eo-7Z1" secondAttribute="centerY" id="gNV-Ot-LZH"/>
|
||||
<constraint firstItem="11I-Jn-Iz5" firstAttribute="top" secondItem="gD8-gD-kvG" secondAttribute="bottom" constant="8" symbolic="YES" id="gOC-dn-ruY"/>
|
||||
<constraint firstItem="7aC-B4-rXp" firstAttribute="leading" secondItem="Qng-vH-mPk" secondAttribute="leading" constant="16" id="kRg-ln-3zw"/>
|
||||
<constraint firstItem="Qng-vH-mPk" firstAttribute="trailing" secondItem="8BV-wp-YO2" secondAttribute="trailing" constant="20" id="tXG-To-QNv"/>
|
||||
<constraint firstItem="GLx-A2-QUQ" firstAttribute="leading" secondItem="Qng-vH-mPk" secondAttribute="leading" constant="16" id="tZw-B5-E6V"/>
|
||||
<constraint firstItem="gD8-gD-kvG" firstAttribute="leading" secondItem="Qng-vH-mPk" secondAttribute="leading" constant="16" id="vcE-OD-6IL"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<tabBarItem key="tabBarItem" title="Home" image="play.fill" catalog="system" id="eCI-mO-7Eb"/>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="mPH-OS-Cf0" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="1507.5" y="358.0985915492958"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
<resources>
|
||||
<image name="ACBackgroundDay" width="750" height="200"/>
|
||||
<image name="grass" width="530" height="93"/>
|
||||
<image name="music.note.list" catalog="system" width="128" height="115"/>
|
||||
<image name="play.circle" catalog="system" width="128" height="121"/>
|
||||
<image name="play.fill" catalog="system" width="116" height="128"/>
|
||||
<systemColor name="labelColor">
|
||||
<color white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</systemColor>
|
||||
<systemColor name="systemBackgroundColor">
|
||||
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</systemColor>
|
||||
<systemColor name="systemFillColor">
|
||||
<color red="0.47058823529411764" green="0.47058823529411764" blue="0.50196078431372548" alpha="0.20000000000000001" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</systemColor>
|
||||
</resources>
|
||||
</document>
|
1405
grandfatherrock/FirstViewController.swift
Normal file
86
grandfatherrock/Info.plist
Normal file
|
@ -0,0 +1,86 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>AC Tape Deck</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>$(MARKETING_VERSION)</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||
<key>LSApplicationCategoryType</key>
|
||||
<string>public.app-category.music</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>NSAppleMusicUsageDescription</key>
|
||||
<string>To select songs for each hour</string>
|
||||
<key>UIAppFonts</key>
|
||||
<array>
|
||||
<string>FinkHeavyttf</string>
|
||||
</array>
|
||||
<key>UIApplicationSceneManifest</key>
|
||||
<dict>
|
||||
<key>UIApplicationSupportsMultipleScenes</key>
|
||||
<false/>
|
||||
<key>UISceneConfigurations</key>
|
||||
<dict>
|
||||
<key>UIWindowSceneSessionRoleApplication</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>UISceneConfigurationName</key>
|
||||
<string>Default Configuration</string>
|
||||
<key>UISceneDelegateClassName</key>
|
||||
<string>$(PRODUCT_MODULE_NAME).SceneDelegate</string>
|
||||
<key>UISceneStoryboardFile</key>
|
||||
<string>Main</string>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>UIBackgroundModes</key>
|
||||
<array>
|
||||
<string>audio</string>
|
||||
</array>
|
||||
<key>UILaunchStoryboardName</key>
|
||||
<string>LaunchScreen</string>
|
||||
<key>UIMainStoryboardFile</key>
|
||||
<string>Main</string>
|
||||
<key>UIRequiredDeviceCapabilities</key>
|
||||
<array>
|
||||
<string>armv7</string>
|
||||
</array>
|
||||
<key>UIStatusBarTintParameters</key>
|
||||
<dict>
|
||||
<key>UINavigationBar</key>
|
||||
<dict>
|
||||
<key>Style</key>
|
||||
<string>UIBarStyleDefault</string>
|
||||
<key>Translucent</key>
|
||||
<false/>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations~ipad</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationPortraitUpsideDown</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
53
grandfatherrock/SceneDelegate.swift
Normal file
|
@ -0,0 +1,53 @@
|
|||
//
|
||||
// SceneDelegate.swift
|
||||
// grandfatherrock
|
||||
//
|
||||
// Created by Micah Gomez on 4/15/20.
|
||||
// Copyright © 2020 Micah Gomez. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
|
||||
|
||||
var window: UIWindow?
|
||||
|
||||
|
||||
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
|
||||
// Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
|
||||
// If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
|
||||
// This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
|
||||
guard let _ = (scene as? UIWindowScene) else { return }
|
||||
}
|
||||
|
||||
func sceneDidDisconnect(_ scene: UIScene) {
|
||||
// Called as the scene is being released by the system.
|
||||
// This occurs shortly after the scene enters the background, or when its session is discarded.
|
||||
// Release any resources associated with this scene that can be re-created the next time the scene connects.
|
||||
// The scene may re-connect later, as its session was not neccessarily discarded (see `application:didDiscardSceneSessions` instead).
|
||||
}
|
||||
|
||||
func sceneDidBecomeActive(_ scene: UIScene) {
|
||||
// Called when the scene has moved from an inactive state to an active state.
|
||||
// Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive.
|
||||
}
|
||||
|
||||
func sceneWillResignActive(_ scene: UIScene) {
|
||||
// Called when the scene will move from an active state to an inactive state.
|
||||
// This may occur due to temporary interruptions (ex. an incoming phone call).
|
||||
}
|
||||
|
||||
func sceneWillEnterForeground(_ scene: UIScene) {
|
||||
// Called as the scene transitions from the background to the foreground.
|
||||
// Use this method to undo the changes made on entering the background.
|
||||
}
|
||||
|
||||
func sceneDidEnterBackground(_ scene: UIScene) {
|
||||
// Called as the scene transitions from the foreground to the background.
|
||||
// Use this method to save data, release shared resources, and store enough scene-specific state information
|
||||
// to restore the scene back to its current state.
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
485
grandfatherrock/SecondViewController.swift
Normal file
|
@ -0,0 +1,485 @@
|
|||
//
|
||||
// SecondViewController.swift
|
||||
// grandfatherrock
|
||||
//
|
||||
// Created by Micah Gomez on 4/15/20.
|
||||
// Copyright © 2020 Micah Gomez. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
import MediaPlayer
|
||||
|
||||
class hourDataCell : UITableViewCell {
|
||||
|
||||
@IBOutlet weak var hourLabel: UILabel!
|
||||
@IBOutlet weak var songLabel : UILabel!
|
||||
|
||||
}
|
||||
|
||||
class SecondViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, MPMediaPickerControllerDelegate {
|
||||
|
||||
var selectedSong: String = ""
|
||||
var tableHour: Int = 0
|
||||
let mediaPicker = MPMediaPickerController(mediaTypes: MPMediaType.music)
|
||||
|
||||
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
||||
return 24
|
||||
}
|
||||
|
||||
func tableView(_ tableView: UITableView,
|
||||
accessoryButtonTappedForRowWith indexPath: IndexPath){
|
||||
let errorAlert = UIAlertController(title: "Song Error", message: "This song doesn't seem to be available. Please make sure that you've properly selected a song and that it is in your music library.", preferredStyle: .alert)
|
||||
|
||||
// Create OK button
|
||||
let OKAction = UIAlertAction(title: "OK", style: .default) { (action:UIAlertAction!) in
|
||||
|
||||
let helpAlert = UIAlertController(title: "Need Help Importing Music?", message: "A tutorial is available to help with importing music to use with this app. Would you like to view it?", preferredStyle: .alert)
|
||||
|
||||
// Create OK button
|
||||
let HelpAction = UIAlertAction(title: "Yes Please!", style: .default) { (action:UIAlertAction!) in
|
||||
if let url = URL(string: "https://youtu.be/YtOC5YFCt7E") {
|
||||
UIApplication.shared.open(url)
|
||||
}
|
||||
}
|
||||
helpAlert.addAction(HelpAction)
|
||||
let NoHelpAction = UIAlertAction(title: "No Thanks", style: .default) { (action:UIAlertAction!) in
|
||||
//print("Ok button tapped");
|
||||
}
|
||||
helpAlert.addAction(NoHelpAction)
|
||||
|
||||
// Present Dialog message
|
||||
self.present(helpAlert, animated: true, completion:nil)
|
||||
|
||||
}
|
||||
errorAlert.addAction(OKAction)
|
||||
|
||||
// Present Dialog message
|
||||
self.present(errorAlert, animated: true, completion:nil)
|
||||
}
|
||||
|
||||
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
|
||||
let cell = tableView.dequeueReusableCell(withIdentifier: "hourcell", for: indexPath) as! hourDataCell
|
||||
|
||||
var rowHour:Int = 12
|
||||
var hourString = String(rowHour)
|
||||
hourString.append(" AM")
|
||||
|
||||
if (indexPath.row < 12) && (indexPath.row > 0) {
|
||||
rowHour = indexPath.row
|
||||
hourString = String(rowHour)
|
||||
hourString.append(" AM")
|
||||
} else if (indexPath.row > 11) {
|
||||
rowHour = indexPath.row
|
||||
if (indexPath.row > 12){
|
||||
rowHour = rowHour - 12
|
||||
}
|
||||
hourString = String(rowHour)
|
||||
hourString.append(" PM")
|
||||
}
|
||||
|
||||
cell.hourLabel?.text = hourString
|
||||
|
||||
switch GlobalVars.selectedMusicList {
|
||||
case 0:
|
||||
cell.songLabel?.text = GlobalVars.musicSelection0[indexPath.row]
|
||||
if (GlobalVars.musicSelectionID0[indexPath.row] == 0){
|
||||
cell.accessoryType = .detailButton
|
||||
} else {
|
||||
cell.accessoryType = .none
|
||||
}
|
||||
case 1:
|
||||
cell.songLabel?.text = GlobalVars.musicSelection1[indexPath.row]
|
||||
if (GlobalVars.musicSelectionID1[indexPath.row] == 0){
|
||||
cell.accessoryType = .detailButton
|
||||
} else {
|
||||
cell.accessoryType = .none
|
||||
}
|
||||
case 2:
|
||||
cell.songLabel?.text = GlobalVars.musicSelection2[indexPath.row]
|
||||
if (GlobalVars.musicSelectionID2[indexPath.row] == 0){
|
||||
cell.accessoryType = .detailButton
|
||||
} else {
|
||||
cell.accessoryType = .none
|
||||
}
|
||||
case 3:
|
||||
cell.songLabel?.text = GlobalVars.musicSelection3[indexPath.row]
|
||||
if (GlobalVars.musicSelectionID3[indexPath.row] == 0){
|
||||
cell.accessoryType = .detailButton
|
||||
} else {
|
||||
cell.accessoryType = .none
|
||||
}
|
||||
case 4:
|
||||
cell.songLabel?.text = GlobalVars.musicSelection4[indexPath.row]
|
||||
if (GlobalVars.musicSelectionID4[indexPath.row] == 0){
|
||||
cell.accessoryType = .detailButton
|
||||
} else {
|
||||
cell.accessoryType = .none
|
||||
}
|
||||
default:
|
||||
cell.songLabel?.text = "uh oh!"
|
||||
cell.accessoryType = .detailButton
|
||||
}
|
||||
|
||||
return cell
|
||||
}
|
||||
|
||||
func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool
|
||||
{
|
||||
return true
|
||||
}
|
||||
|
||||
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath){
|
||||
if editingStyle == .delete
|
||||
{
|
||||
switch GlobalVars.selectedMusicList {
|
||||
case 0:
|
||||
GlobalVars.musicSelection0[indexPath.row] = ""
|
||||
GlobalVars.musicSelectionID0[indexPath.row] = 0
|
||||
case 1:
|
||||
GlobalVars.musicSelection1[indexPath.row] = ""
|
||||
GlobalVars.musicSelectionID1[indexPath.row] = 0
|
||||
case 2:
|
||||
GlobalVars.musicSelection2[indexPath.row] = ""
|
||||
GlobalVars.musicSelectionID2[indexPath.row] = 0
|
||||
case 3:
|
||||
GlobalVars.musicSelection3[indexPath.row] = ""
|
||||
GlobalVars.musicSelectionID3[indexPath.row] = 0
|
||||
case 4:
|
||||
GlobalVars.musicSelection4[indexPath.row] = ""
|
||||
GlobalVars.musicSelectionID4[indexPath.row] = 0
|
||||
default:
|
||||
GlobalVars.musicSelection0[indexPath.row] = ""
|
||||
GlobalVars.musicSelectionID0[indexPath.row] = 0
|
||||
}
|
||||
|
||||
hoursTable.reloadData()
|
||||
|
||||
if ((MPMusicPlayerController.applicationMusicPlayer.playbackState == MPMusicPlaybackState.playing) && (tableHour == GlobalVars.hour)){
|
||||
musicHandler.updateMusic()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){
|
||||
|
||||
//let mediaPicker = MPMediaPickerController(mediaTypes: MPMediaType.music)
|
||||
tableHour = indexPath.row
|
||||
//print(tableHour)
|
||||
present(mediaPicker, animated: true, completion: nil)
|
||||
/*if (selectedSong != "") {
|
||||
GlobalVars.musicSelection[indexPath.row] = selectedSong
|
||||
selectedSong = ""
|
||||
}
|
||||
self.hoursTable.reloadData()*/
|
||||
}
|
||||
|
||||
|
||||
let defaults = UserDefaults.standard
|
||||
|
||||
|
||||
/*func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
|
||||
|
||||
return type.count
|
||||
}
|
||||
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
|
||||
return type[row]
|
||||
}
|
||||
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
|
||||
//print(type[row])
|
||||
//print(row)
|
||||
defaults.set(type[row], forKey: "selectedTitle")
|
||||
defaults.set(row, forKey: "titleNo")
|
||||
GlobalVars.selectedGame = type[row]
|
||||
GlobalVars.selectedGameNo = row
|
||||
GlobalVars.titleName = type[row]
|
||||
musicHandler.updateMusic()
|
||||
nowPlaying.text = GlobalVars.titleName! + " - " + String(GlobalVars.hour)
|
||||
}
|
||||
func numberOfComponents(in pickerView: UIPickerView) -> Int {
|
||||
return 1
|
||||
}*/
|
||||
|
||||
func mediaPicker(_ mediaPicker: MPMediaPickerController, didPickMediaItems mediaItemCollection: MPMediaItemCollection){
|
||||
//let musicPlayer = MPMusicPlayerController.applicationMusicPlayer
|
||||
|
||||
//musicPlayer.setQueue(with: mediaItemCollection)
|
||||
////print(mediaItemCollection)
|
||||
//musicPlayer.play()
|
||||
//print("selected song")
|
||||
selectedSong = String(mediaItemCollection.items[0].title ?? "NOTHING")
|
||||
//print(selectedSong)
|
||||
|
||||
//print(GlobalVars.selectedMusicList)
|
||||
switch GlobalVars.selectedMusicList {
|
||||
case 0:
|
||||
GlobalVars.musicSelectionID0[tableHour] = mediaItemCollection.items[0].persistentID
|
||||
GlobalVars.musicSelection0[tableHour] = selectedSong
|
||||
case 1:
|
||||
GlobalVars.musicSelectionID1[tableHour] = mediaItemCollection.items[0].persistentID
|
||||
GlobalVars.musicSelection1[tableHour] = selectedSong
|
||||
case 2:
|
||||
GlobalVars.musicSelectionID2[tableHour] = mediaItemCollection.items[0].persistentID
|
||||
GlobalVars.musicSelection2[tableHour] = selectedSong
|
||||
case 3:
|
||||
GlobalVars.musicSelectionID3[tableHour] = mediaItemCollection.items[0].persistentID
|
||||
GlobalVars.musicSelection3[tableHour] = selectedSong
|
||||
case 4:
|
||||
GlobalVars.musicSelectionID4[tableHour] = mediaItemCollection.items[0].persistentID
|
||||
GlobalVars.musicSelection4[tableHour] = selectedSong
|
||||
default:
|
||||
GlobalVars.musicSelectionID0[tableHour] = mediaItemCollection.items[0].persistentID
|
||||
GlobalVars.musicSelection0[tableHour] = selectedSong
|
||||
}
|
||||
|
||||
//GlobalVars.musicSelectionID1[tableHour] = mediaItemCollection.items[0].persistentID
|
||||
//GlobalVars.musicSelection1[tableHour] = selectedSong
|
||||
|
||||
if ((MPMusicPlayerController.applicationMusicPlayer.playbackState == MPMusicPlaybackState.playing) && (tableHour == GlobalVars.hour)){
|
||||
musicHandler.updateMusic()
|
||||
}
|
||||
|
||||
hoursTable.reloadData()
|
||||
dismiss(animated: true, completion: nil)
|
||||
}
|
||||
|
||||
func mediaPickerDidCancel(_ mediaPicker: MPMediaPickerController) {
|
||||
dismiss(animated: true, completion: nil)
|
||||
hoursTable.reloadData()
|
||||
}
|
||||
|
||||
@IBOutlet var hoursTable: UITableView!
|
||||
|
||||
@IBOutlet var gradientView: UIView!
|
||||
|
||||
@IBOutlet var selectListControl: UISegmentedControl!
|
||||
|
||||
@IBAction func selectListControlChanged(_ sender: Any) {
|
||||
|
||||
MPMusicPlayerController.applicationMusicPlayer.stop()
|
||||
|
||||
GlobalVars.selectedMusicList = selectListControl.selectedSegmentIndex
|
||||
//print(GlobalVars.selectedMusicList)
|
||||
hoursTable.reloadData()
|
||||
/*var noSongs = false
|
||||
switch GlobalVars.selectedMusicList {
|
||||
case 0:
|
||||
for i in GlobalVars.musicSelectionID0 {
|
||||
if (i == 0){
|
||||
noSongs = true
|
||||
}
|
||||
}
|
||||
case 1:
|
||||
for i in GlobalVars.musicSelectionID1 {
|
||||
if (i == 0){
|
||||
noSongs = true
|
||||
}
|
||||
}
|
||||
case 2:
|
||||
for i in GlobalVars.musicSelectionID2 {
|
||||
if (i == 0){
|
||||
noSongs = true
|
||||
}
|
||||
}
|
||||
case 3:
|
||||
for i in GlobalVars.musicSelectionID3 {
|
||||
if (i == 0){
|
||||
noSongs = true
|
||||
}
|
||||
}
|
||||
case 4:
|
||||
for i in GlobalVars.musicSelectionID4 {
|
||||
if (i == 0){
|
||||
noSongs = true
|
||||
}
|
||||
}
|
||||
default:
|
||||
for i in GlobalVars.musicSelectionID0 {
|
||||
if (i == 0){
|
||||
noSongs = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if noSongs {
|
||||
MPMusicPlayerController.applicationMusicPlayer.pause()
|
||||
//print("pausing")
|
||||
}*/
|
||||
|
||||
musicHandler.updateMusic()
|
||||
//print("updating")
|
||||
}
|
||||
|
||||
|
||||
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
// Do any additional setup after loading the view.
|
||||
|
||||
// TODO REQUEST PERMISSION FIRST
|
||||
|
||||
mediaPicker.delegate = self
|
||||
mediaPicker.allowsPickingMultipleItems = false
|
||||
|
||||
//present(mediaPicker, animated: true, completion: nil)
|
||||
//selectedSong = ""
|
||||
|
||||
//pickerView.selectRow(2, inComponent: 0, animated: true)
|
||||
//pickerView.dataSource = self
|
||||
//pickerView.delegate = self
|
||||
hoursTable.delegate = self
|
||||
hoursTable.dataSource = self
|
||||
|
||||
selectListControl.selectedSegmentIndex = GlobalVars.selectedMusicList
|
||||
|
||||
}
|
||||
|
||||
override func viewWillAppear(_ animated: Bool) {
|
||||
|
||||
let prevHour = GlobalVars.hour
|
||||
GlobalVars.hour = Calendar.current.component(.hour, from: Date())
|
||||
if GlobalVars.hour != prevHour {
|
||||
musicHandler.updateMusic()
|
||||
}
|
||||
|
||||
// create the gradient layer
|
||||
let gradient = CAGradientLayer()
|
||||
gradient.frame = self.view.bounds
|
||||
//print("time: ", GlobalVars.hour)
|
||||
if((GlobalVars.hour >= 8) && (GlobalVars.hour <= 19)){ //Daytime
|
||||
//print("day")
|
||||
gradient.colors = [UIColor(red: 0.39, green: 0.69, blue: 1.00, alpha: 1).cgColor, UIColor(red: 0.07, green: 0.45, blue: 0.87, alpha: 1).cgColor]
|
||||
} else if((GlobalVars.hour >= 20) && (GlobalVars.hour <= 21)){//Sunset
|
||||
//print("sunset")
|
||||
gradient.colors = [UIColor(red: 0.00, green: 0.31, blue: 0.59, alpha: 1).cgColor, UIColor(red: 1.00, green: 0.78, blue: 0.88, alpha: 1).cgColor]
|
||||
} else if((GlobalVars.hour >= 22) || (GlobalVars.hour <= 5)){//Night
|
||||
//print("night")
|
||||
gradient.colors = [UIColor(red: 0.08, green: 0.27, blue: 0.59, alpha: 1).cgColor, UIColor(red: 0.00, green: 0.20, blue: 0.29, alpha: 1).cgColor]
|
||||
} else if((GlobalVars.hour >= 6) && (GlobalVars.hour <= 7)){//Sunrise
|
||||
//print("sunrise")
|
||||
gradient.colors = [UIColor(red: 0.02, green: 0.26, blue: 0.49, alpha: 1).cgColor, UIColor(red: 0.89, green: 0.68, blue: 0.60, alpha: 1).cgColor]
|
||||
}
|
||||
|
||||
gradient.locations = [0.00, 1.00]
|
||||
|
||||
/*let gradientChangeAnimation = CABasicAnimation(keyPath: "colors")
|
||||
gradientChangeAnimation.duration = 5.0
|
||||
if((GlobalVars.hour >= 8) && (GlobalVars.hour <= 19)){ //Daytime
|
||||
//print("day")
|
||||
gradientChangeAnimation.toValue = [UIColor(red: 0.00, green: 0.31, blue: 0.59, alpha: 1).cgColor, UIColor(red: 0.07, green: 0.45, blue: 0.87, alpha: 1).cgColor]
|
||||
} else if((GlobalVars.hour >= 20) && (GlobalVars.hour <= 21)){//Sunset
|
||||
//print("sunset")
|
||||
gradientChangeAnimation.toValue = [UIColor(red: 0.00, green: 0.31, blue: 0.59, alpha: 1).cgColor, UIColor(red: 1.00, green: 0.61, blue: 0.43, alpha: 1).cgColor]
|
||||
} else if((GlobalVars.hour >= 22) || (GlobalVars.hour <= 5)){//Night
|
||||
//print("night")
|
||||
gradientChangeAnimation.toValue = [
|
||||
UIColor(red: 0.68, green: 0.67, blue: 1.0, alpha: 1).cgColor,
|
||||
UIColor(red: 1.00, green: 0.00, blue: 0.09, alpha: 1).cgColor
|
||||
]
|
||||
} else if((GlobalVars.hour >= 6) && (GlobalVars.hour <= 7)){//Sunrise
|
||||
//print("sunrise")
|
||||
gradientChangeAnimation.toValue = [UIColor(red: 0.02, green: 0.26, blue: 0.49, alpha: 1).cgColor, UIColor(red: 0.89, green: 0.68, blue: 0.60, alpha: 1).cgColor]
|
||||
}
|
||||
gradientChangeAnimation.autoreverses = true
|
||||
gradientChangeAnimation.fillMode = CAMediaTimingFillMode.forwards
|
||||
gradientChangeAnimation.isRemovedOnCompletion = false
|
||||
gradient.add(gradientChangeAnimation, forKey: "colorChange")
|
||||
*/
|
||||
// add the gradient to the view
|
||||
gradientView.layer.addSublayer(gradient)
|
||||
|
||||
switch GlobalVars.selectedMusicList {
|
||||
case 0:
|
||||
//print(GlobalVars.musicSelectionID0)
|
||||
print(GlobalVars.musicSelection0)
|
||||
case 1:
|
||||
//print(GlobalVars.musicSelectionID1)
|
||||
print(GlobalVars.musicSelection1)
|
||||
case 2:
|
||||
//print(GlobalVars.musicSelectionID2)
|
||||
print(GlobalVars.musicSelection2)
|
||||
case 3:
|
||||
//print(GlobalVars.musicSelectionID3)
|
||||
print(GlobalVars.musicSelection3)
|
||||
case 4:
|
||||
//print(GlobalVars.musicSelectionID4)
|
||||
print(GlobalVars.musicSelection4)
|
||||
default:
|
||||
//print(GlobalVars.musicSelectionID0)
|
||||
print(GlobalVars.musicSelection0)
|
||||
}
|
||||
}
|
||||
|
||||
override func viewWillDisappear(_ animated: Bool) {
|
||||
do {
|
||||
try defaults.setObject(GlobalVars.musicSelection0, forKey: "savedMusicSelection0")
|
||||
} catch {
|
||||
//print(error.localizedDescription)
|
||||
}
|
||||
do {
|
||||
try defaults.setObject(GlobalVars.musicSelectionID0, forKey: "savedMusicSelectionID0")
|
||||
} catch {
|
||||
//print(error.localizedDescription)
|
||||
}
|
||||
do {
|
||||
try defaults.setObject(GlobalVars.musicSelection1, forKey: "savedMusicSelection1")
|
||||
} catch {
|
||||
//print(error.localizedDescription)
|
||||
}
|
||||
do {
|
||||
try defaults.setObject(GlobalVars.musicSelectionID1, forKey: "savedMusicSelectionID1")
|
||||
} catch {
|
||||
//print(error.localizedDescription)
|
||||
}
|
||||
do {
|
||||
try defaults.setObject(GlobalVars.musicSelection2, forKey: "savedMusicSelection2")
|
||||
} catch {
|
||||
//print(error.localizedDescription)
|
||||
}
|
||||
do {
|
||||
try defaults.setObject(GlobalVars.musicSelectionID2, forKey: "savedMusicSelectionID2")
|
||||
} catch {
|
||||
//print(error.localizedDescription)
|
||||
}
|
||||
do {
|
||||
try defaults.setObject(GlobalVars.musicSelection3, forKey: "savedMusicSelection3")
|
||||
} catch {
|
||||
//print(error.localizedDescription)
|
||||
}
|
||||
do {
|
||||
try defaults.setObject(GlobalVars.musicSelectionID3, forKey: "savedMusicSelectionID3")
|
||||
} catch {
|
||||
//print(error.localizedDescription)
|
||||
}
|
||||
do {
|
||||
try defaults.setObject(GlobalVars.musicSelection4, forKey: "savedMusicSelection4")
|
||||
} catch {
|
||||
//print(error.localizedDescription)
|
||||
}
|
||||
do {
|
||||
try defaults.setObject(GlobalVars.musicSelectionID4, forKey: "savedMusicSelectionID4")
|
||||
} catch {
|
||||
//print(error.localizedDescription)
|
||||
}
|
||||
|
||||
do {
|
||||
try defaults.setObject(GlobalVars.selectedMusicList, forKey: "savedSelectedMusicList")
|
||||
} catch {
|
||||
//print(error.localizedDescription)
|
||||
}
|
||||
}
|
||||
|
||||
override func viewDidDisappear(_ animated: Bool) {
|
||||
gradientView.layer.sublayers?.forEach { $0.removeFromSuperlayer() }
|
||||
}
|
||||
|
||||
@IBAction func visitWebsite(_ sender: Any) {
|
||||
|
||||
let NotificationVC = self.storyboard?.instantiateViewController(withIdentifier: "ThirdViewController") as! UIViewController
|
||||
|
||||
self.present(NotificationVC, animated: true, completion: nil)
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
50
grandfatherrock/ThirdViewController.swift
Normal file
|
@ -0,0 +1,50 @@
|
|||
//
|
||||
// SecondViewController.swift
|
||||
// grandfatherrock
|
||||
//
|
||||
// Created by Micah Gomez on 4/15/20.
|
||||
// Copyright © 2020 Micah Gomez. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
import MediaPlayer
|
||||
|
||||
class ThirdViewController: UIViewController {
|
||||
|
||||
@IBAction func websiteButton(_ sender: Any) {
|
||||
if let url = URL(string: "https://micahpgomez.dev") {
|
||||
UIApplication.shared.open(url)
|
||||
}
|
||||
}
|
||||
|
||||
@IBAction func supportEmail(_ sender: Any) {
|
||||
if let url = URL(string: "mailto:support@micahpgomez.dev") {
|
||||
UIApplication.shared.open(url)
|
||||
}
|
||||
}
|
||||
|
||||
@IBAction func smallTipButton(_ sender: Any) {
|
||||
IAPHandler.shared.purchaseMyProduct(index: 0)
|
||||
}
|
||||
|
||||
@IBAction func mediumTipButton(_ sender: Any) {
|
||||
IAPHandler.shared.purchaseMyProduct(index: 1)
|
||||
}
|
||||
|
||||
@IBAction func largeTipButton(_ sender: Any) {
|
||||
IAPHandler.shared.purchaseMyProduct(index: 2)
|
||||
}
|
||||
|
||||
let defaults = UserDefaults.standard
|
||||
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
// Do any additional setup after loading the view.
|
||||
//print("view loaded!")
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
BIN
grandfatherrock/fonts/FinkHeavy.ttf
Normal file
BIN
grandfatherrock/gifs/day.gif
Normal file
After Width: | Height: | Size: 253 KiB |
BIN
grandfatherrock/gifs/night.gif
Normal file
After Width: | Height: | Size: 206 KiB |
10
grandfatherrock/grandfatherrock.entitlements
Normal file
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>com.apple.security.app-sandbox</key>
|
||||
<true/>
|
||||
<key>com.apple.security.network.client</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
22
grandfatherrockTests/Info.plist
Normal file
|
@ -0,0 +1,22 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
</dict>
|
||||
</plist>
|
34
grandfatherrockTests/grandfatherrockTests.swift
Normal file
|
@ -0,0 +1,34 @@
|
|||
//
|
||||
// grandfatherrockTests.swift
|
||||
// grandfatherrockTests
|
||||
//
|
||||
// Created by Micah Gomez on 4/15/20.
|
||||
// Copyright © 2020 Micah Gomez. All rights reserved.
|
||||
//
|
||||
|
||||
import XCTest
|
||||
@testable import grandfatherrock
|
||||
|
||||
class grandfatherrockTests: XCTestCase {
|
||||
|
||||
override func setUpWithError() throws {
|
||||
// Put setup code here. This method is called before the invocation of each test method in the class.
|
||||
}
|
||||
|
||||
override func tearDownWithError() throws {
|
||||
// Put teardown code here. This method is called after the invocation of each test method in the class.
|
||||
}
|
||||
|
||||
func testExample() throws {
|
||||
// This is an example of a functional test case.
|
||||
// Use XCTAssert and related functions to verify your tests produce the correct results.
|
||||
}
|
||||
|
||||
func testPerformanceExample() throws {
|
||||
// This is an example of a performance test case.
|
||||
self.measure {
|
||||
// Put the code you want to measure the time of here.
|
||||
}
|
||||
}
|
||||
|
||||
}
|
22
grandfatherrockUITests/Info.plist
Normal file
|
@ -0,0 +1,22 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
</dict>
|
||||
</plist>
|
43
grandfatherrockUITests/grandfatherrockUITests.swift
Normal file
|
@ -0,0 +1,43 @@
|
|||
//
|
||||
// grandfatherrockUITests.swift
|
||||
// grandfatherrockUITests
|
||||
//
|
||||
// Created by Micah Gomez on 4/15/20.
|
||||
// Copyright © 2020 Micah Gomez. All rights reserved.
|
||||
//
|
||||
|
||||
import XCTest
|
||||
|
||||
class grandfatherrockUITests: XCTestCase {
|
||||
|
||||
override func setUpWithError() throws {
|
||||
// Put setup code here. This method is called before the invocation of each test method in the class.
|
||||
|
||||
// In UI tests it is usually best to stop immediately when a failure occurs.
|
||||
continueAfterFailure = false
|
||||
|
||||
// In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.
|
||||
}
|
||||
|
||||
override func tearDownWithError() throws {
|
||||
// Put teardown code here. This method is called after the invocation of each test method in the class.
|
||||
}
|
||||
|
||||
func testExample() throws {
|
||||
// UI tests must launch the application that they test.
|
||||
let app = XCUIApplication()
|
||||
app.launch()
|
||||
|
||||
// Use recording to get started writing UI tests.
|
||||
// Use XCTAssert and related functions to verify your tests produce the correct results.
|
||||
}
|
||||
|
||||
func testLaunchPerformance() throws {
|
||||
if #available(macOS 10.15, iOS 13.0, tvOS 13.0, *) {
|
||||
// This measures how long it takes to launch your application.
|
||||
measure(metrics: [XCTOSSignpostMetric.applicationLaunch]) {
|
||||
XCUIApplication().launch()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|