implemented widgets, assets
|
@ -21,6 +21,12 @@
|
|||
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 */; };
|
||||
BDE56CB925186B0500A47239 /* WidgetKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BDE579F52514894600248E86 /* WidgetKit.framework */; platformFilter = ios; };
|
||||
BDE56CBA25186B0500A47239 /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BD58E8C325145778008D1E8E /* SwiftUI.framework */; };
|
||||
BDE56CBD25186B0500A47239 /* hsscene.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDE56CBC25186B0500A47239 /* hsscene.swift */; };
|
||||
BDE56CBF25186B0C00A47239 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = BDE56CBE25186B0C00A47239 /* Assets.xcassets */; };
|
||||
BDE56CC325186B0C00A47239 /* hssceneExtension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = BDE56CB825186B0500A47239 /* hssceneExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
||||
BDE56CCB25186C4100A47239 /* FinkHeavy.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BDB53FCC250765A1004E9788 /* FinkHeavy.ttf */; };
|
||||
BDE8138F2507422100371570 /* ThirdViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDE8138E2507422100371570 /* ThirdViewController.swift */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
|
@ -39,6 +45,13 @@
|
|||
remoteGlobalIDString = BDA060F52447F3E6009C72CE;
|
||||
remoteInfo = grandfatherrock;
|
||||
};
|
||||
BDE56CC125186B0C00A47239 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = BDA060EE2447F3E5009C72CE /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = BDE56CB725186B0500A47239;
|
||||
remoteInfo = hssceneExtension;
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
|
@ -48,6 +61,7 @@
|
|||
dstPath = "";
|
||||
dstSubfolderSpec = 13;
|
||||
files = (
|
||||
BDE56CC325186B0C00A47239 /* hssceneExtension.appex in Embed App Extensions */,
|
||||
);
|
||||
name = "Embed App Extensions";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
|
@ -59,6 +73,7 @@
|
|||
BD7A5E332510173A003E992C /* day.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = day.gif; sourceTree = "<group>"; };
|
||||
BD7A5E38251034D7003E992C /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = System/Library/Frameworks/StoreKit.framework; sourceTree = SDKROOT; };
|
||||
BD7D35D52510042D00A61B6B /* night.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = night.gif; sourceTree = "<group>"; };
|
||||
BD8D804625188B2200389258 /* hssceneExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = hssceneExtension.entitlements; 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>"; };
|
||||
|
@ -76,6 +91,10 @@
|
|||
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>"; };
|
||||
BDE56CB825186B0500A47239 /* hssceneExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = hssceneExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
BDE56CBC25186B0500A47239 /* hsscene.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = hsscene.swift; sourceTree = "<group>"; };
|
||||
BDE56CBE25186B0C00A47239 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
BDE56CC025186B0C00A47239 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
BDE579F52514894600248E86 /* WidgetKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WidgetKit.framework; path = System/Library/Frameworks/WidgetKit.framework; sourceTree = SDKROOT; };
|
||||
BDE8138E2507422100371570 /* ThirdViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThirdViewController.swift; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
@ -104,6 +123,15 @@
|
|||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
BDE56CB525186B0500A47239 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
BDE56CBA25186B0500A47239 /* SwiftUI.framework in Frameworks */,
|
||||
BDE56CB925186B0500A47239 /* WidgetKit.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
|
@ -129,9 +157,11 @@
|
|||
BDA060ED2447F3E5009C72CE = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
BD8D804625188B2200389258 /* hssceneExtension.entitlements */,
|
||||
BDA060F82447F3E6009C72CE /* grandfatherrock */,
|
||||
BDA061112447F3F3009C72CE /* grandfatherrockTests */,
|
||||
BDA0611C2447F3F3009C72CE /* grandfatherrockUITests */,
|
||||
BDE56CBB25186B0500A47239 /* hsscene */,
|
||||
BDA060F72447F3E6009C72CE /* Products */,
|
||||
BD7A5E37251034D7003E992C /* Frameworks */,
|
||||
);
|
||||
|
@ -143,6 +173,7 @@
|
|||
BDA060F62447F3E6009C72CE /* Nook Music.app */,
|
||||
BDA0610E2447F3F3009C72CE /* grandfatherrockTests.xctest */,
|
||||
BDA061192447F3F3009C72CE /* grandfatherrockUITests.xctest */,
|
||||
BDE56CB825186B0500A47239 /* hssceneExtension.appex */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
|
@ -192,6 +223,16 @@
|
|||
path = fonts;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
BDE56CBB25186B0500A47239 /* hsscene */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
BDE56CBC25186B0500A47239 /* hsscene.swift */,
|
||||
BDE56CBE25186B0C00A47239 /* Assets.xcassets */,
|
||||
BDE56CC025186B0C00A47239 /* Info.plist */,
|
||||
);
|
||||
path = hsscene;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
|
@ -207,6 +248,7 @@
|
|||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
BDE56CC225186B0C00A47239 /* PBXTargetDependency */,
|
||||
);
|
||||
name = grandfatherrock;
|
||||
packageProductDependencies = (
|
||||
|
@ -252,6 +294,23 @@
|
|||
productReference = BDA061192447F3F3009C72CE /* grandfatherrockUITests.xctest */;
|
||||
productType = "com.apple.product-type.bundle.ui-testing";
|
||||
};
|
||||
BDE56CB725186B0500A47239 /* hssceneExtension */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = BDE56CC425186B0C00A47239 /* Build configuration list for PBXNativeTarget "hssceneExtension" */;
|
||||
buildPhases = (
|
||||
BDE56CB425186B0500A47239 /* Sources */,
|
||||
BDE56CB525186B0500A47239 /* Frameworks */,
|
||||
BDE56CB625186B0500A47239 /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = hssceneExtension;
|
||||
productName = hssceneExtension;
|
||||
productReference = BDE56CB825186B0500A47239 /* hssceneExtension.appex */;
|
||||
productType = "com.apple.product-type.app-extension";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
|
@ -273,6 +332,9 @@
|
|||
CreatedOnToolsVersion = 11.4.1;
|
||||
TestTargetID = BDA060F52447F3E6009C72CE;
|
||||
};
|
||||
BDE56CB725186B0500A47239 = {
|
||||
CreatedOnToolsVersion = 12.0;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = BDA060F12447F3E5009C72CE /* Build configuration list for PBXProject "TapeDeck" */;
|
||||
|
@ -294,6 +356,7 @@
|
|||
BDA060F52447F3E6009C72CE /* grandfatherrock */,
|
||||
BDA0610D2447F3F3009C72CE /* grandfatherrockTests */,
|
||||
BDA061182447F3F3009C72CE /* grandfatherrockUITests */,
|
||||
BDE56CB725186B0500A47239 /* hssceneExtension */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
@ -326,6 +389,15 @@
|
|||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
BDE56CB625186B0500A47239 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
BDE56CCB25186C4100A47239 /* FinkHeavy.ttf in Resources */,
|
||||
BDE56CBF25186B0C00A47239 /* Assets.xcassets in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
|
@ -357,6 +429,14 @@
|
|||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
BDE56CB425186B0500A47239 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
BDE56CBD25186B0500A47239 /* hsscene.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
|
@ -370,6 +450,11 @@
|
|||
target = BDA060F52447F3E6009C72CE /* grandfatherrock */;
|
||||
targetProxy = BDA0611A2447F3F3009C72CE /* PBXContainerItemProxy */;
|
||||
};
|
||||
BDE56CC225186B0C00A47239 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = BDE56CB725186B0500A47239 /* hssceneExtension */;
|
||||
targetProxy = BDE56CC125186B0C00A47239 /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
|
@ -644,6 +729,58 @@
|
|||
};
|
||||
name = Release;
|
||||
};
|
||||
BDE56CC525186B0C00A47239 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||
ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground;
|
||||
CODE_SIGN_ENTITLEMENTS = hssceneExtension.entitlements;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
DEVELOPMENT_TEAM = PRBH2T6668;
|
||||
INFOPLIST_FILE = hsscene/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@executable_path/../../Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = dev.mpg13.grandfatherrock.hsscene;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
SUPPORTS_MACCATALYST = NO;
|
||||
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
BDE56CC625186B0C00A47239 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||
ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground;
|
||||
CODE_SIGN_ENTITLEMENTS = hssceneExtension.entitlements;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
DEVELOPMENT_TEAM = PRBH2T6668;
|
||||
INFOPLIST_FILE = hsscene/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@executable_path/../../Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = dev.mpg13.grandfatherrock.hsscene;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
SUPPORTS_MACCATALYST = NO;
|
||||
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
|
@ -683,6 +820,15 @@
|
|||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
BDE56CC425186B0C00A47239 /* Build configuration list for PBXNativeTarget "hssceneExtension" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
BDE56CC525186B0C00A47239 /* Debug */,
|
||||
BDE56CC625186B0C00A47239 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
|
||||
/* Begin XCRemoteSwiftPackageReference section */
|
||||
|
|
|
@ -9,6 +9,11 @@
|
|||
<key>orderHint</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<key>hssceneExtension.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
<key>hswidgetExtension.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
|
|
BIN
hsscene/Assets.xcassets/ACBackgroundDay.imageset/ACBackgroundNightLarge-1.png
vendored
Normal file
After Width: | Height: | Size: 5.3 KiB |
BIN
hsscene/Assets.xcassets/ACBackgroundDay.imageset/ACBackgroundNightLarge-2.png
vendored
Normal file
After Width: | Height: | Size: 5.3 KiB |
BIN
hsscene/Assets.xcassets/ACBackgroundDay.imageset/ACBackgroundNightLarge.png
vendored
Normal file
After Width: | Height: | Size: 5.3 KiB |
26
hsscene/Assets.xcassets/ACBackgroundDay.imageset/Contents.json
vendored
Normal file
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"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
|
||||
},
|
||||
"properties" : {
|
||||
"compression-type" : "gpu-optimized-smallest"
|
||||
}
|
||||
}
|
BIN
hsscene/Assets.xcassets/ACBackgroundNight.imageset/ACBackgroundDayLarge-1.png
vendored
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
hsscene/Assets.xcassets/ACBackgroundNight.imageset/ACBackgroundDayLarge-2.png
vendored
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
hsscene/Assets.xcassets/ACBackgroundNight.imageset/ACBackgroundDayLarge.png
vendored
Normal file
After Width: | Height: | Size: 11 KiB |
26
hsscene/Assets.xcassets/ACBackgroundNight.imageset/Contents.json
vendored
Normal file
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"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
|
||||
},
|
||||
"properties" : {
|
||||
"compression-type" : "gpu-optimized-smallest"
|
||||
}
|
||||
}
|
11
hsscene/Assets.xcassets/AccentColor.colorset/Contents.json
Normal file
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"colors" : [
|
||||
{
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
98
hsscene/Assets.xcassets/AppIcon.appiconset/Contents.json
Normal file
|
@ -0,0 +1,98 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "20x20"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "20x20"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "40x40"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "40x40"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "60x60"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "60x60"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "20x20"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "20x20"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "40x40"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "40x40"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "76x76"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "76x76"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "83.5x83.5"
|
||||
},
|
||||
{
|
||||
"idiom" : "ios-marketing",
|
||||
"scale" : "1x",
|
||||
"size" : "1024x1024"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
6
hsscene/Assets.xcassets/Contents.json
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"colors" : [
|
||||
{
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
26
hsscene/Assets.xcassets/grass.imageset/Contents.json
vendored
Normal file
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"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
|
||||
},
|
||||
"properties" : {
|
||||
"compression-type" : "gpu-optimized-smallest"
|
||||
}
|
||||
}
|
BIN
hsscene/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
hsscene/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
hsscene/Assets.xcassets/grass.imageset/Screen Shot 2020-09-13 at 6.28.42 PM.png
vendored
Normal file
After Width: | Height: | Size: 24 KiB |
33
hsscene/Info.plist
Normal file
|
@ -0,0 +1,33 @@
|
|||
<?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>hsscene</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>
|
||||
<key>NSExtension</key>
|
||||
<dict>
|
||||
<key>NSExtensionPointIdentifier</key>
|
||||
<string>com.apple.widgetkit-extension</string>
|
||||
</dict>
|
||||
<key>UIAppFonts</key>
|
||||
<array>
|
||||
<string>FinkHeavy.ttf</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
269
hsscene/hsscene.swift
Normal file
|
@ -0,0 +1,269 @@
|
|||
//
|
||||
// hswidget.swift
|
||||
// hswidget
|
||||
//
|
||||
// Created by Micah Gomez on 9/17/20.
|
||||
// Copyright © 2020 Micah Gomez. All rights reserved.
|
||||
//
|
||||
|
||||
import WidgetKit
|
||||
import SwiftUI
|
||||
|
||||
struct Provider: TimelineProvider {
|
||||
func placeholder(in context: Context) -> SimpleEntry {
|
||||
return SimpleEntry(date: Date(), hour: hourString(), c1: getC1(), c2: getC2(), sceneAsset: getSceneAsset())
|
||||
}
|
||||
|
||||
func getSnapshot(in context: Context, completion: @escaping (SimpleEntry) -> ()) {
|
||||
let entry = SimpleEntry(date: Date(), hour: hourString(), c1: getC1(), c2: getC2(), sceneAsset: getSceneAsset())
|
||||
completion(entry)
|
||||
}
|
||||
|
||||
func getTimeline(in context: Context, completion: @escaping (Timeline<Entry>) -> ()) {
|
||||
var entries: [SimpleEntry] = []
|
||||
|
||||
// Generate a timeline consisting of five entries an hour apart, starting from the current date.
|
||||
let currentDate = Date()
|
||||
for hourOffset in 0 ..< 5 {
|
||||
let entryDate = Calendar.current.date(byAdding: .minute, value: hourOffset*5, to: currentDate)!
|
||||
let entry = SimpleEntry(date: entryDate, hour: hourString(), c1: getC1(), c2: getC2(), sceneAsset: getSceneAsset())
|
||||
entries.append(entry)
|
||||
}
|
||||
|
||||
let timeline = Timeline(entries: entries, policy: .atEnd)
|
||||
completion(timeline)
|
||||
}
|
||||
|
||||
func hourString() -> String {
|
||||
let currentHour = Calendar.current.component(.hour, from: Date())
|
||||
var rowHour:Int = 12
|
||||
var hourString = String(rowHour)
|
||||
hourString.append(" AM")
|
||||
|
||||
if (currentHour < 12) && (currentHour > 0) {
|
||||
rowHour = currentHour
|
||||
hourString = String(rowHour)
|
||||
hourString.append(" AM")
|
||||
} else if (currentHour > 11) {
|
||||
rowHour = currentHour
|
||||
if (currentHour > 12){
|
||||
rowHour = rowHour - 12
|
||||
}
|
||||
hourString = String(rowHour)
|
||||
hourString.append(" PM")
|
||||
}
|
||||
return hourString
|
||||
}
|
||||
|
||||
func getC1() -> Color {
|
||||
var c1:Color = Color.white
|
||||
if((Calendar.current.component(.hour, from: Date()) >= 8) && (Calendar.current.component(.hour, from: Date()) <= 19)){ //Daytime
|
||||
print("day")
|
||||
c1 = Color(red: 0.39, green: 0.69, blue: 1.00)
|
||||
} else if((Calendar.current.component(.hour, from: Date()) >= 20) && (Calendar.current.component(.hour, from: Date()) <= 21)){//Sunset
|
||||
print("sunset")
|
||||
c1 = Color(red: 0.00, green: 0.31, blue: 0.59)
|
||||
} else if((Calendar.current.component(.hour, from: Date()) >= 22) || (Calendar.current.component(.hour, from: Date()) <= 5)){//Night
|
||||
print("night")
|
||||
c1 = Color(red: 0.08, green: 0.27, blue: 0.59)
|
||||
} else if((Calendar.current.component(.hour, from: Date()) >= 6) && (Calendar.current.component(.hour, from: Date()) <= 7)){//Sunrise
|
||||
print("sunrise")
|
||||
c1 = Color(red: 0.02, green: 0.26, blue: 0.49)
|
||||
}
|
||||
return c1
|
||||
}
|
||||
|
||||
func getC2() -> Color {
|
||||
var c2:Color = Color.white
|
||||
if((Calendar.current.component(.hour, from: Date()) >= 8) && (Calendar.current.component(.hour, from: Date()) <= 19)){ //Daytime
|
||||
print("day")
|
||||
c2 = Color(red: 0.07, green: 0.45, blue: 0.87)
|
||||
} else if((Calendar.current.component(.hour, from: Date()) >= 20) && (Calendar.current.component(.hour, from: Date()) <= 21)){//Sunset
|
||||
print("sunset")
|
||||
c2 = Color(red: 1.00, green: 0.78, blue: 0.88)
|
||||
} else if((Calendar.current.component(.hour, from: Date()) >= 22) || (Calendar.current.component(.hour, from: Date()) <= 5)){//Night
|
||||
print("night")
|
||||
c2 = Color(red: 0.00, green: 0.20, blue: 0.29)
|
||||
} else if((Calendar.current.component(.hour, from: Date()) >= 6) && (Calendar.current.component(.hour, from: Date()) <= 7)){//Sunrise
|
||||
print("sunrise")
|
||||
c2 = Color(red: 0.89, green: 0.68, blue: 0.60)
|
||||
}
|
||||
return c2
|
||||
}
|
||||
|
||||
func getSceneAsset() -> String {
|
||||
var sceneAsset:String = "ACBackgroundDay"
|
||||
if((Calendar.current.component(.hour, from: Date()) >= 8) && (Calendar.current.component(.hour, from: Date()) <= 19)){ //Daytime
|
||||
print("day")
|
||||
sceneAsset = "ACBackgroundDay"
|
||||
} else if((Calendar.current.component(.hour, from: Date()) >= 20) && (Calendar.current.component(.hour, from: Date()) <= 21)){//Sunset
|
||||
print("sunset")
|
||||
sceneAsset = "ACBackgroundDay"
|
||||
} else if((Calendar.current.component(.hour, from: Date()) >= 22) || (Calendar.current.component(.hour, from: Date()) <= 5)){//Night
|
||||
print("night")
|
||||
sceneAsset = "ACBackgroundNight"
|
||||
} else if((Calendar.current.component(.hour, from: Date()) >= 6) && (Calendar.current.component(.hour, from: Date()) <= 7)){//Sunrise
|
||||
print("sunrise")
|
||||
sceneAsset = "ACBackgroundDay"
|
||||
}
|
||||
return sceneAsset
|
||||
}
|
||||
}
|
||||
|
||||
struct SimpleEntry: TimelineEntry {
|
||||
let date: Date
|
||||
let hour: String
|
||||
//let hourInt: Int
|
||||
let c1:Color
|
||||
let c2:Color
|
||||
let sceneAsset:String
|
||||
}
|
||||
|
||||
struct cardSmallView : View {
|
||||
var entry: Provider.Entry
|
||||
|
||||
var body: some View {
|
||||
GeometryReader { geometry in
|
||||
VStack(alignment:.center){
|
||||
Spacer()
|
||||
Text(String(entry.hour))
|
||||
.font(Font.custom("FinkHeavy", size: 32))
|
||||
.foregroundColor(Color(red: 0.84, green: 0.69, blue: 0.33))
|
||||
Spacer()
|
||||
Image(entry.sceneAsset)
|
||||
.resizable()
|
||||
.scaledToFit()
|
||||
Spacer()
|
||||
.frame(height: 0)
|
||||
Image("grass")
|
||||
.resizable()
|
||||
.scaledToFit()
|
||||
}
|
||||
.background(LinearGradient(gradient: Gradient(colors: [entry.c1, entry.c2]), startPoint: .top, endPoint: .bottom))
|
||||
//.frame(width: geometry.size.width, height: geometry.size.height)
|
||||
.padding(.leading, -20)
|
||||
.padding(.trailing, -20)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct cardMediumView : View {
|
||||
var entry: Provider.Entry
|
||||
|
||||
var body: some View {
|
||||
GeometryReader { geometry in
|
||||
VStack(alignment:.center){
|
||||
HStack(){
|
||||
Spacer()
|
||||
VStack(){
|
||||
|
||||
Spacer()
|
||||
Text(String(entry.hour))
|
||||
.font(Font.custom("FinkHeavy", size: 32))
|
||||
.foregroundColor(Color(red: 0.84, green: 0.69, blue: 0.33))
|
||||
Spacer()
|
||||
}
|
||||
Spacer()
|
||||
VStack(){
|
||||
Spacer()
|
||||
Image(entry.sceneAsset)
|
||||
.resizable()
|
||||
.scaledToFit()
|
||||
.frame(maxWidth: geometry.size.width/2)
|
||||
}
|
||||
Spacer()
|
||||
}
|
||||
Spacer()
|
||||
.frame(height: 0)
|
||||
Image("grass")
|
||||
.resizable()
|
||||
.scaledToFit()
|
||||
}
|
||||
.background(LinearGradient(gradient: Gradient(colors: [entry.c1, entry.c2]), startPoint: .top, endPoint: .bottom))
|
||||
//.frame(width: geometry.size.width, height: geometry.size.height)
|
||||
.padding(.leading, -20)
|
||||
.padding(.trailing, -20)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct cardLargeView : View {
|
||||
var entry: Provider.Entry
|
||||
|
||||
var body: some View {
|
||||
GeometryReader { geometry in
|
||||
VStack(alignment:.center){
|
||||
Spacer()
|
||||
Text(String(entry.hour))
|
||||
.font(Font.custom("FinkHeavy", size: 72))
|
||||
.foregroundColor(Color(red: 0.84, green: 0.69, blue: 0.33))
|
||||
Spacer()
|
||||
Image(entry.sceneAsset)
|
||||
.resizable()
|
||||
.scaledToFit()
|
||||
Spacer()
|
||||
.frame(height: 0)
|
||||
Image("grass")
|
||||
.resizable()
|
||||
.scaledToFit()
|
||||
}
|
||||
.background(LinearGradient(gradient: Gradient(colors: [entry.c1, entry.c2]), startPoint: .top, endPoint: .bottom))
|
||||
//.frame(width: geometry.size.width, height: geometry.size.height)
|
||||
.padding(.leading, -20)
|
||||
.padding(.trailing, -20)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct detailsNotAvailable : View {
|
||||
var entry: Provider.Entry
|
||||
|
||||
var body: some View{
|
||||
VStack{
|
||||
Text("Nothing Available")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
struct hswidgetEntryView : View {
|
||||
var entry: Provider.Entry
|
||||
@Environment(\.widgetFamily) var family: WidgetFamily
|
||||
|
||||
let dateFormatter = DateFormatter()
|
||||
|
||||
var body: some View {
|
||||
ZStack
|
||||
{
|
||||
Group{
|
||||
switch family {
|
||||
case .systemSmall: cardSmallView(entry: entry)
|
||||
case .systemMedium: cardMediumView(entry: entry)
|
||||
case .systemLarge: cardLargeView(entry: entry)
|
||||
default: detailsNotAvailable(entry: entry)
|
||||
}
|
||||
}.padding(.horizontal)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@main
|
||||
struct hswidget: Widget {
|
||||
let kind: String = "hswidget"
|
||||
|
||||
var body: some WidgetConfiguration {
|
||||
StaticConfiguration(kind: kind, provider: Provider()) { entry in
|
||||
hswidgetEntryView(entry: entry)
|
||||
}
|
||||
.configurationDisplayName("AC Clock Widget")
|
||||
.description("Takes the hour and main screen view from AC Tape Deck and condences it to fit on your home screen.")
|
||||
}
|
||||
}
|
||||
|
||||
struct hswidget_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
hswidgetEntryView(entry: SimpleEntry(date: Date(), hour: "3 PM", c1: Color(red: 0.39, green: 0.69, blue: 1.00), c2: Color(red: 0.07, green: 0.45, blue: 0.87), sceneAsset: "ACBackgroundDay"))
|
||||
.previewContext(WidgetPreviewContext(family: .systemSmall))
|
||||
}
|
||||
}
|
10
hssceneExtension.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>
|