implemented widgets, assets
|
@ -21,6 +21,12 @@
|
||||||
BDA061132447F3F3009C72CE /* grandfatherrockTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDA061122447F3F3009C72CE /* grandfatherrockTests.swift */; };
|
BDA061132447F3F3009C72CE /* grandfatherrockTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDA061122447F3F3009C72CE /* grandfatherrockTests.swift */; };
|
||||||
BDA0611E2447F3F3009C72CE /* grandfatherrockUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDA0611D2447F3F3009C72CE /* grandfatherrockUITests.swift */; };
|
BDA0611E2447F3F3009C72CE /* grandfatherrockUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDA0611D2447F3F3009C72CE /* grandfatherrockUITests.swift */; };
|
||||||
BDB53FCE250765A2004E9788 /* FinkHeavy.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BDB53FCC250765A1004E9788 /* FinkHeavy.ttf */; };
|
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 */; };
|
BDE8138F2507422100371570 /* ThirdViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDE8138E2507422100371570 /* ThirdViewController.swift */; };
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
|
@ -39,6 +45,13 @@
|
||||||
remoteGlobalIDString = BDA060F52447F3E6009C72CE;
|
remoteGlobalIDString = BDA060F52447F3E6009C72CE;
|
||||||
remoteInfo = grandfatherrock;
|
remoteInfo = grandfatherrock;
|
||||||
};
|
};
|
||||||
|
BDE56CC125186B0C00A47239 /* PBXContainerItemProxy */ = {
|
||||||
|
isa = PBXContainerItemProxy;
|
||||||
|
containerPortal = BDA060EE2447F3E5009C72CE /* Project object */;
|
||||||
|
proxyType = 1;
|
||||||
|
remoteGlobalIDString = BDE56CB725186B0500A47239;
|
||||||
|
remoteInfo = hssceneExtension;
|
||||||
|
};
|
||||||
/* End PBXContainerItemProxy section */
|
/* End PBXContainerItemProxy section */
|
||||||
|
|
||||||
/* Begin PBXCopyFilesBuildPhase section */
|
/* Begin PBXCopyFilesBuildPhase section */
|
||||||
|
@ -48,6 +61,7 @@
|
||||||
dstPath = "";
|
dstPath = "";
|
||||||
dstSubfolderSpec = 13;
|
dstSubfolderSpec = 13;
|
||||||
files = (
|
files = (
|
||||||
|
BDE56CC325186B0C00A47239 /* hssceneExtension.appex in Embed App Extensions */,
|
||||||
);
|
);
|
||||||
name = "Embed App Extensions";
|
name = "Embed App Extensions";
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
@ -59,6 +73,7 @@
|
||||||
BD7A5E332510173A003E992C /* day.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = day.gif; sourceTree = "<group>"; };
|
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; };
|
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>"; };
|
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; };
|
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>"; };
|
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>"; };
|
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>"; };
|
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>"; };
|
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>"; };
|
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; };
|
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>"; };
|
BDE8138E2507422100371570 /* ThirdViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThirdViewController.swift; sourceTree = "<group>"; };
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
|
@ -104,6 +123,15 @@
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
|
BDE56CB525186B0500A47239 /* Frameworks */ = {
|
||||||
|
isa = PBXFrameworksBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
BDE56CBA25186B0500A47239 /* SwiftUI.framework in Frameworks */,
|
||||||
|
BDE56CB925186B0500A47239 /* WidgetKit.framework in Frameworks */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
/* End PBXFrameworksBuildPhase section */
|
/* End PBXFrameworksBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXGroup section */
|
/* Begin PBXGroup section */
|
||||||
|
@ -129,9 +157,11 @@
|
||||||
BDA060ED2447F3E5009C72CE = {
|
BDA060ED2447F3E5009C72CE = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
BD8D804625188B2200389258 /* hssceneExtension.entitlements */,
|
||||||
BDA060F82447F3E6009C72CE /* grandfatherrock */,
|
BDA060F82447F3E6009C72CE /* grandfatherrock */,
|
||||||
BDA061112447F3F3009C72CE /* grandfatherrockTests */,
|
BDA061112447F3F3009C72CE /* grandfatherrockTests */,
|
||||||
BDA0611C2447F3F3009C72CE /* grandfatherrockUITests */,
|
BDA0611C2447F3F3009C72CE /* grandfatherrockUITests */,
|
||||||
|
BDE56CBB25186B0500A47239 /* hsscene */,
|
||||||
BDA060F72447F3E6009C72CE /* Products */,
|
BDA060F72447F3E6009C72CE /* Products */,
|
||||||
BD7A5E37251034D7003E992C /* Frameworks */,
|
BD7A5E37251034D7003E992C /* Frameworks */,
|
||||||
);
|
);
|
||||||
|
@ -143,6 +173,7 @@
|
||||||
BDA060F62447F3E6009C72CE /* Nook Music.app */,
|
BDA060F62447F3E6009C72CE /* Nook Music.app */,
|
||||||
BDA0610E2447F3F3009C72CE /* grandfatherrockTests.xctest */,
|
BDA0610E2447F3F3009C72CE /* grandfatherrockTests.xctest */,
|
||||||
BDA061192447F3F3009C72CE /* grandfatherrockUITests.xctest */,
|
BDA061192447F3F3009C72CE /* grandfatherrockUITests.xctest */,
|
||||||
|
BDE56CB825186B0500A47239 /* hssceneExtension.appex */,
|
||||||
);
|
);
|
||||||
name = Products;
|
name = Products;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
|
@ -192,6 +223,16 @@
|
||||||
path = fonts;
|
path = fonts;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
BDE56CBB25186B0500A47239 /* hsscene */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
BDE56CBC25186B0500A47239 /* hsscene.swift */,
|
||||||
|
BDE56CBE25186B0C00A47239 /* Assets.xcassets */,
|
||||||
|
BDE56CC025186B0C00A47239 /* Info.plist */,
|
||||||
|
);
|
||||||
|
path = hsscene;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
/* End PBXGroup section */
|
/* End PBXGroup section */
|
||||||
|
|
||||||
/* Begin PBXNativeTarget section */
|
/* Begin PBXNativeTarget section */
|
||||||
|
@ -207,6 +248,7 @@
|
||||||
buildRules = (
|
buildRules = (
|
||||||
);
|
);
|
||||||
dependencies = (
|
dependencies = (
|
||||||
|
BDE56CC225186B0C00A47239 /* PBXTargetDependency */,
|
||||||
);
|
);
|
||||||
name = grandfatherrock;
|
name = grandfatherrock;
|
||||||
packageProductDependencies = (
|
packageProductDependencies = (
|
||||||
|
@ -252,6 +294,23 @@
|
||||||
productReference = BDA061192447F3F3009C72CE /* grandfatherrockUITests.xctest */;
|
productReference = BDA061192447F3F3009C72CE /* grandfatherrockUITests.xctest */;
|
||||||
productType = "com.apple.product-type.bundle.ui-testing";
|
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 */
|
/* End PBXNativeTarget section */
|
||||||
|
|
||||||
/* Begin PBXProject section */
|
/* Begin PBXProject section */
|
||||||
|
@ -273,6 +332,9 @@
|
||||||
CreatedOnToolsVersion = 11.4.1;
|
CreatedOnToolsVersion = 11.4.1;
|
||||||
TestTargetID = BDA060F52447F3E6009C72CE;
|
TestTargetID = BDA060F52447F3E6009C72CE;
|
||||||
};
|
};
|
||||||
|
BDE56CB725186B0500A47239 = {
|
||||||
|
CreatedOnToolsVersion = 12.0;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
buildConfigurationList = BDA060F12447F3E5009C72CE /* Build configuration list for PBXProject "TapeDeck" */;
|
buildConfigurationList = BDA060F12447F3E5009C72CE /* Build configuration list for PBXProject "TapeDeck" */;
|
||||||
|
@ -294,6 +356,7 @@
|
||||||
BDA060F52447F3E6009C72CE /* grandfatherrock */,
|
BDA060F52447F3E6009C72CE /* grandfatherrock */,
|
||||||
BDA0610D2447F3F3009C72CE /* grandfatherrockTests */,
|
BDA0610D2447F3F3009C72CE /* grandfatherrockTests */,
|
||||||
BDA061182447F3F3009C72CE /* grandfatherrockUITests */,
|
BDA061182447F3F3009C72CE /* grandfatherrockUITests */,
|
||||||
|
BDE56CB725186B0500A47239 /* hssceneExtension */,
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
/* End PBXProject section */
|
/* End PBXProject section */
|
||||||
|
@ -326,6 +389,15 @@
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
|
BDE56CB625186B0500A47239 /* Resources */ = {
|
||||||
|
isa = PBXResourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
BDE56CCB25186C4100A47239 /* FinkHeavy.ttf in Resources */,
|
||||||
|
BDE56CBF25186B0C00A47239 /* Assets.xcassets in Resources */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
/* End PBXResourcesBuildPhase section */
|
/* End PBXResourcesBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXSourcesBuildPhase section */
|
/* Begin PBXSourcesBuildPhase section */
|
||||||
|
@ -357,6 +429,14 @@
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
|
BDE56CB425186B0500A47239 /* Sources */ = {
|
||||||
|
isa = PBXSourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
BDE56CBD25186B0500A47239 /* hsscene.swift in Sources */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
/* End PBXSourcesBuildPhase section */
|
/* End PBXSourcesBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXTargetDependency section */
|
/* Begin PBXTargetDependency section */
|
||||||
|
@ -370,6 +450,11 @@
|
||||||
target = BDA060F52447F3E6009C72CE /* grandfatherrock */;
|
target = BDA060F52447F3E6009C72CE /* grandfatherrock */;
|
||||||
targetProxy = BDA0611A2447F3F3009C72CE /* PBXContainerItemProxy */;
|
targetProxy = BDA0611A2447F3F3009C72CE /* PBXContainerItemProxy */;
|
||||||
};
|
};
|
||||||
|
BDE56CC225186B0C00A47239 /* PBXTargetDependency */ = {
|
||||||
|
isa = PBXTargetDependency;
|
||||||
|
target = BDE56CB725186B0500A47239 /* hssceneExtension */;
|
||||||
|
targetProxy = BDE56CC125186B0C00A47239 /* PBXContainerItemProxy */;
|
||||||
|
};
|
||||||
/* End PBXTargetDependency section */
|
/* End PBXTargetDependency section */
|
||||||
|
|
||||||
/* Begin PBXVariantGroup section */
|
/* Begin PBXVariantGroup section */
|
||||||
|
@ -644,6 +729,58 @@
|
||||||
};
|
};
|
||||||
name = Release;
|
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 */
|
/* End XCBuildConfiguration section */
|
||||||
|
|
||||||
/* Begin XCConfigurationList section */
|
/* Begin XCConfigurationList section */
|
||||||
|
@ -683,6 +820,15 @@
|
||||||
defaultConfigurationIsVisible = 0;
|
defaultConfigurationIsVisible = 0;
|
||||||
defaultConfigurationName = Release;
|
defaultConfigurationName = Release;
|
||||||
};
|
};
|
||||||
|
BDE56CC425186B0C00A47239 /* Build configuration list for PBXNativeTarget "hssceneExtension" */ = {
|
||||||
|
isa = XCConfigurationList;
|
||||||
|
buildConfigurations = (
|
||||||
|
BDE56CC525186B0C00A47239 /* Debug */,
|
||||||
|
BDE56CC625186B0C00A47239 /* Release */,
|
||||||
|
);
|
||||||
|
defaultConfigurationIsVisible = 0;
|
||||||
|
defaultConfigurationName = Release;
|
||||||
|
};
|
||||||
/* End XCConfigurationList section */
|
/* End XCConfigurationList section */
|
||||||
|
|
||||||
/* Begin XCRemoteSwiftPackageReference section */
|
/* Begin XCRemoteSwiftPackageReference section */
|
||||||
|
|
|
@ -9,6 +9,11 @@
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>0</integer>
|
<integer>0</integer>
|
||||||
</dict>
|
</dict>
|
||||||
|
<key>hssceneExtension.xcscheme_^#shared#^_</key>
|
||||||
|
<dict>
|
||||||
|
<key>orderHint</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
</dict>
|
||||||
<key>hswidgetExtension.xcscheme_^#shared#^_</key>
|
<key>hswidgetExtension.xcscheme_^#shared#^_</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>orderHint</key>
|
<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>
|