diff --git a/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-117x117@2x.png b/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-117x117@2x.png new file mode 100644 index 0000000..ef27afa Binary files /dev/null and b/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-117x117@2x.png differ diff --git a/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-128x128.png b/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-128x128.png new file mode 100644 index 0000000..7aacea4 Binary files /dev/null and b/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-128x128.png differ diff --git a/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-129x129@2x.png b/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-129x129@2x.png new file mode 100644 index 0000000..69ab670 Binary files /dev/null and b/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-129x129@2x.png differ diff --git a/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-16x16.png b/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-16x16.png new file mode 100644 index 0000000..e29d48d Binary files /dev/null and b/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-16x16.png differ diff --git a/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-256x256.png b/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-256x256.png new file mode 100644 index 0000000..3813353 Binary files /dev/null and b/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-256x256.png differ diff --git a/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-30x30@2x.png b/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-30x30@2x.png new file mode 100644 index 0000000..89a1f80 Binary files /dev/null and b/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-30x30@2x.png differ diff --git a/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-32x32.png b/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-32x32.png new file mode 100644 index 0000000..5e22a46 Binary files /dev/null and b/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-32x32.png differ diff --git a/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-33x33@2x.png b/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-33x33@2x.png new file mode 100644 index 0000000..3df4fe6 Binary files /dev/null and b/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-33x33@2x.png differ diff --git a/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-38x38@3x.png b/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-38x38@3x.png new file mode 100644 index 0000000..a0604b2 Binary files /dev/null and b/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-38x38@3x.png differ diff --git a/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-43.5x43.5@2x.png b/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-43.5x43.5@2x.png new file mode 100644 index 0000000..cbd96c8 Binary files /dev/null and b/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-43.5x43.5@2x.png differ diff --git a/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-44x44.png b/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-44x44.png new file mode 100644 index 0000000..2e1a1cf Binary files /dev/null and b/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-44x44.png differ diff --git a/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-46x46@2x.png b/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-46x46@2x.png new file mode 100644 index 0000000..235915f Binary files /dev/null and b/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-46x46@2x.png differ diff --git a/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-48x48.png b/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-48x48.png new file mode 100644 index 0000000..0dfae56 Binary files /dev/null and b/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-48x48.png differ diff --git a/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-512x512.png b/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-512x512.png new file mode 100644 index 0000000..e861cde Binary files /dev/null and b/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-512x512.png differ diff --git a/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-51x51@2x.png b/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-51x51@2x.png new file mode 100644 index 0000000..215d3ef Binary files /dev/null and b/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-51x51@2x.png differ diff --git a/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-54x54@2x.png b/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-54x54@2x.png new file mode 100644 index 0000000..7557d62 Binary files /dev/null and b/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-54x54@2x.png differ diff --git a/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-55x55.png b/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-55x55.png new file mode 100644 index 0000000..e0e1732 Binary files /dev/null and b/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-55x55.png differ diff --git a/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-64x64.png b/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-64x64.png new file mode 100644 index 0000000..7ac80d1 Binary files /dev/null and b/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-64x64.png differ diff --git a/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-64x64@3x.png b/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-64x64@3x.png new file mode 100644 index 0000000..2d7a3d3 Binary files /dev/null and b/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-64x64@3x.png differ diff --git a/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-68x68@2x.png b/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-68x68@2x.png new file mode 100644 index 0000000..a853a0f Binary files /dev/null and b/Assets/watchOS-AppIcon-assets/Icon-AppleWatch-68x68@2x.png differ diff --git a/Lazy Clock watchOS WatchKit App/Assets.xcassets/AppIcon.appiconset/Contents.json b/Lazy Clock watchOS WatchKit App/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 28de837..0000000 --- a/Lazy Clock watchOS WatchKit App/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,92 +0,0 @@ -{ - "images" : [ - { - "size" : "24x24", - "idiom" : "watch", - "filename" : "Icon-AppleWatch-24x24@2x.png", - "scale" : "2x", - "role" : "notificationCenter", - "subtype" : "38mm" - }, - { - "size" : "27.5x27.5", - "idiom" : "watch", - "filename" : "Icon-AppleWatch-27.5x27.5@2x.png", - "scale" : "2x", - "role" : "notificationCenter", - "subtype" : "42mm" - }, - { - "size" : "29x29", - "idiom" : "watch", - "filename" : "Icon-AppleWatch-29x29@2x.png", - "role" : "companionSettings", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "watch", - "filename" : "Icon-AppleWatch-29x29@3x.png", - "role" : "companionSettings", - "scale" : "3x" - }, - { - "size" : "40x40", - "idiom" : "watch", - "filename" : "Icon-AppleWatch-40x40@2x.png", - "scale" : "2x", - "role" : "appLauncher", - "subtype" : "38mm" - }, - { - "size" : "44x44", - "idiom" : "watch", - "filename" : "Icon-AppleWatch-44x44@2x.png", - "scale" : "2x", - "role" : "appLauncher", - "subtype" : "40mm" - }, - { - "size" : "50x50", - "idiom" : "watch", - "filename" : "Icon-AppleWatch-50x50@2x.png", - "scale" : "2x", - "role" : "appLauncher", - "subtype" : "44mm" - }, - { - "size" : "86x86", - "idiom" : "watch", - "filename" : "Icon-AppleWatch-86x86@2x.png", - "scale" : "2x", - "role" : "quickLook", - "subtype" : "38mm" - }, - { - "size" : "98x98", - "idiom" : "watch", - "filename" : "Icon-AppleWatch-98x98@2x.png", - "scale" : "2x", - "role" : "quickLook", - "subtype" : "42mm" - }, - { - "size" : "108x108", - "idiom" : "watch", - "filename" : "Icon-AppleWatch-108x108@2x.png", - "scale" : "2x", - "role" : "quickLook", - "subtype" : "44mm" - }, - { - "size" : "1024x1024", - "idiom" : "watch-marketing", - "filename" : "Icon-AppleWatch-1024x1024.png", - "scale" : "1x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Lazy Clock watchOS WatchKit App/Assets.xcassets/AppIcon.appiconset/Icon-AppleWatch-24x24@2x.png b/Lazy Clock watchOS WatchKit App/Assets.xcassets/AppIcon.appiconset/Icon-AppleWatch-24x24@2x.png deleted file mode 100644 index 39f552c..0000000 Binary files a/Lazy Clock watchOS WatchKit App/Assets.xcassets/AppIcon.appiconset/Icon-AppleWatch-24x24@2x.png and /dev/null differ diff --git a/Lazy Clock watchOS WatchKit App/Assets.xcassets/AppIcon.appiconset/Icon-AppleWatch-27.5x27.5@2x.png b/Lazy Clock watchOS WatchKit App/Assets.xcassets/AppIcon.appiconset/Icon-AppleWatch-27.5x27.5@2x.png deleted file mode 100644 index c545b80..0000000 Binary files a/Lazy Clock watchOS WatchKit App/Assets.xcassets/AppIcon.appiconset/Icon-AppleWatch-27.5x27.5@2x.png and /dev/null differ diff --git a/Lazy Clock watchOS WatchKit App/Assets.xcassets/AppIcon.appiconset/Icon-AppleWatch-29x29@3x.png b/Lazy Clock watchOS WatchKit App/Assets.xcassets/AppIcon.appiconset/Icon-AppleWatch-29x29@3x.png deleted file mode 100644 index 1861fad..0000000 Binary files a/Lazy Clock watchOS WatchKit App/Assets.xcassets/AppIcon.appiconset/Icon-AppleWatch-29x29@3x.png and /dev/null differ diff --git a/Lazy Clock watchOS WatchKit App/Assets.xcassets/Contents.json b/Lazy Clock watchOS WatchKit App/Assets.xcassets/Contents.json deleted file mode 100644 index da4a164..0000000 --- a/Lazy Clock watchOS WatchKit App/Assets.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Lazy Clock watchOS WatchKit App/Base.lproj/Interface.storyboard b/Lazy Clock watchOS WatchKit App/Base.lproj/Interface.storyboard deleted file mode 100644 index 1fa6c00..0000000 --- a/Lazy Clock watchOS WatchKit App/Base.lproj/Interface.storyboard +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/Lazy Clock watchOS WatchKit App/Info.plist b/Lazy Clock watchOS WatchKit App/Info.plist deleted file mode 100644 index d26104a..0000000 --- a/Lazy Clock watchOS WatchKit App/Info.plist +++ /dev/null @@ -1,31 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleDisplayName - Lazy Clock watchOS WatchKit App - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - $(PRODUCT_BUNDLE_PACKAGE_TYPE) - CFBundleShortVersionString - $(MARKETING_VERSION) - CFBundleVersion - $(CURRENT_PROJECT_VERSION) - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - - WKWatchKitApp - - - diff --git a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/Contents.json b/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/Contents.json deleted file mode 100644 index bf7a04f..0000000 --- a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/Contents.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "images" : [ - { - "idiom" : "watch", - "filename" : "Icon-AppleWatch-16x16@2.png", - "screen-width" : "<=145", - "scale" : "2x" - }, - { - "idiom" : "watch", - "filename" : "Icon-AppleWatch-18x18@2x.png", - "screen-width" : ">161", - "scale" : "2x" - }, - { - "idiom" : "watch", - "filename" : "Icon-AppleWatch-18x18@2x-1.png", - "screen-width" : ">145", - "scale" : "2x" - }, - { - "idiom" : "watch", - "filename" : "Icon-AppleWatch-20x20@2x.png", - "screen-width" : ">183", - "scale" : "2x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/Icon-AppleWatch-16x16@2.png b/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/Icon-AppleWatch-16x16@2.png deleted file mode 100644 index a16b6bb..0000000 Binary files a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/Icon-AppleWatch-16x16@2.png and /dev/null differ diff --git a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/Icon-AppleWatch-18x18@2x-1.png b/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/Icon-AppleWatch-18x18@2x-1.png deleted file mode 100644 index 7c1dc4c..0000000 Binary files a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/Icon-AppleWatch-18x18@2x-1.png and /dev/null differ diff --git a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/Icon-AppleWatch-18x18@2x.png b/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/Icon-AppleWatch-18x18@2x.png deleted file mode 100644 index 7c1dc4c..0000000 Binary files a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/Icon-AppleWatch-18x18@2x.png and /dev/null differ diff --git a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/Icon-AppleWatch-20x20@2x.png b/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/Icon-AppleWatch-20x20@2x.png deleted file mode 100644 index 71bea9a..0000000 Binary files a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/Icon-AppleWatch-20x20@2x.png and /dev/null differ diff --git a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Contents.json b/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Contents.json deleted file mode 100644 index 1571c7e..0000000 --- a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Contents.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "assets" : [ - { - "idiom" : "watch", - "filename" : "Circular.imageset", - "role" : "circular" - }, - { - "idiom" : "watch", - "filename" : "Extra Large.imageset", - "role" : "extra-large" - }, - { - "idiom" : "watch", - "filename" : "Graphic Bezel.imageset", - "role" : "graphic-bezel" - }, - { - "idiom" : "watch", - "filename" : "Graphic Circular.imageset", - "role" : "graphic-circular" - }, - { - "idiom" : "watch", - "filename" : "Graphic Corner.imageset", - "role" : "graphic-corner" - }, - { - "idiom" : "watch", - "filename" : "Graphic Large Rectangular.imageset", - "role" : "graphic-large-rectangular" - }, - { - "idiom" : "watch", - "filename" : "Modular.imageset", - "role" : "modular" - }, - { - "idiom" : "watch", - "filename" : "Utilitarian.imageset", - "role" : "utilitarian" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Extra Large.imageset/Contents.json b/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Extra Large.imageset/Contents.json deleted file mode 100644 index 09910ab..0000000 --- a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Extra Large.imageset/Contents.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "images" : [ - { - "idiom" : "watch", - "filename" : "Icon-AppleWatch-91x91@2x.png", - "screen-width" : "<=145", - "scale" : "2x" - }, - { - "idiom" : "watch", - "filename" : "Icon-AppleWatch-101.5x101.5@2x.png", - "screen-width" : ">161", - "scale" : "2x" - }, - { - "idiom" : "watch", - "filename" : "Icon-AppleWatch-101.5x101.5@2x-1.png", - "screen-width" : ">145", - "scale" : "2x" - }, - { - "idiom" : "watch", - "filename" : "Icon-AppleWatch-112x112@2x.png", - "screen-width" : ">183", - "scale" : "2x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Extra Large.imageset/Icon-AppleWatch-101.5x101.5@2x-1.png b/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Extra Large.imageset/Icon-AppleWatch-101.5x101.5@2x-1.png deleted file mode 100644 index 131460d..0000000 Binary files a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Extra Large.imageset/Icon-AppleWatch-101.5x101.5@2x-1.png and /dev/null differ diff --git a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Extra Large.imageset/Icon-AppleWatch-101.5x101.5@2x.png b/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Extra Large.imageset/Icon-AppleWatch-101.5x101.5@2x.png deleted file mode 100644 index 131460d..0000000 Binary files a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Extra Large.imageset/Icon-AppleWatch-101.5x101.5@2x.png and /dev/null differ diff --git a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Extra Large.imageset/Icon-AppleWatch-112x112@2x.png b/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Extra Large.imageset/Icon-AppleWatch-112x112@2x.png deleted file mode 100644 index 3f68b6f..0000000 Binary files a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Extra Large.imageset/Icon-AppleWatch-112x112@2x.png and /dev/null differ diff --git a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Extra Large.imageset/Icon-AppleWatch-91x91@2x.png b/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Extra Large.imageset/Icon-AppleWatch-91x91@2x.png deleted file mode 100644 index 3d51c1f..0000000 Binary files a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Extra Large.imageset/Icon-AppleWatch-91x91@2x.png and /dev/null differ diff --git a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Contents.json b/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Contents.json deleted file mode 100644 index f70abc4..0000000 --- a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Contents.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "images" : [ - { - "idiom" : "watch", - "filename" : "Icon-AppleWatch-42x42@2x.png", - "screen-width" : "<=145", - "scale" : "2x" - }, - { - "idiom" : "watch", - "filename" : "Icon-AppleWatch-42x42@2x-1.png", - "screen-width" : ">161", - "scale" : "2x" - }, - { - "idiom" : "watch", - "filename" : "Icon-AppleWatch-42x42@2x-2.png", - "screen-width" : ">145", - "scale" : "2x" - }, - { - "idiom" : "watch", - "filename" : "Icon-AppleWatch-47x47@2x.png", - "screen-width" : ">183", - "scale" : "2x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Icon-AppleWatch-42x42@2x-1.png b/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Icon-AppleWatch-42x42@2x-1.png deleted file mode 100644 index f38f7c8..0000000 Binary files a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Icon-AppleWatch-42x42@2x-1.png and /dev/null differ diff --git a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Icon-AppleWatch-42x42@2x-2.png b/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Icon-AppleWatch-42x42@2x-2.png deleted file mode 100644 index f38f7c8..0000000 Binary files a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Icon-AppleWatch-42x42@2x-2.png and /dev/null differ diff --git a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Icon-AppleWatch-42x42@2x.png b/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Icon-AppleWatch-42x42@2x.png deleted file mode 100644 index f38f7c8..0000000 Binary files a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Icon-AppleWatch-42x42@2x.png and /dev/null differ diff --git a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Icon-AppleWatch-47x47@2x.png b/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Icon-AppleWatch-47x47@2x.png deleted file mode 100644 index c74feff..0000000 Binary files a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Icon-AppleWatch-47x47@2x.png and /dev/null differ diff --git a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/Contents.json b/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/Contents.json deleted file mode 100644 index 97873ad..0000000 --- a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/Contents.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "images" : [ - { - "idiom" : "watch", - "filename" : "Icon-AppleWatch-42x42@2x-2.png", - "screen-width" : "<=145", - "scale" : "2x" - }, - { - "idiom" : "watch", - "filename" : "Icon-AppleWatch-42x42@2x-1.png", - "screen-width" : ">161", - "scale" : "2x" - }, - { - "idiom" : "watch", - "filename" : "Icon-AppleWatch-42x42@2x.png", - "screen-width" : ">145", - "scale" : "2x" - }, - { - "idiom" : "watch", - "filename" : "Icon-AppleWatch-47x47@2x.png", - "screen-width" : ">183", - "scale" : "2x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/Icon-AppleWatch-42x42@2x-1.png b/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/Icon-AppleWatch-42x42@2x-1.png deleted file mode 100644 index f38f7c8..0000000 Binary files a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/Icon-AppleWatch-42x42@2x-1.png and /dev/null differ diff --git a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/Icon-AppleWatch-42x42@2x-2.png b/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/Icon-AppleWatch-42x42@2x-2.png deleted file mode 100644 index f38f7c8..0000000 Binary files a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/Icon-AppleWatch-42x42@2x-2.png and /dev/null differ diff --git a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/Icon-AppleWatch-42x42@2x.png b/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/Icon-AppleWatch-42x42@2x.png deleted file mode 100644 index f38f7c8..0000000 Binary files a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/Icon-AppleWatch-42x42@2x.png and /dev/null differ diff --git a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/Icon-AppleWatch-47x47@2x.png b/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/Icon-AppleWatch-47x47@2x.png deleted file mode 100644 index c74feff..0000000 Binary files a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/Icon-AppleWatch-47x47@2x.png and /dev/null differ diff --git a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Corner.imageset/Contents.json b/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Corner.imageset/Contents.json deleted file mode 100644 index aefef29..0000000 --- a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Corner.imageset/Contents.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "images" : [ - { - "idiom" : "watch", - "scale" : "2x", - "screen-width" : "<=145" - }, - { - "idiom" : "watch", - "scale" : "2x", - "screen-width" : ">161" - }, - { - "idiom" : "watch", - "scale" : "2x", - "screen-width" : ">145" - }, - { - "idiom" : "watch", - "scale" : "2x", - "screen-width" : ">183" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Large Rectangular.imageset/Contents.json b/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Large Rectangular.imageset/Contents.json deleted file mode 100644 index aefef29..0000000 --- a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Large Rectangular.imageset/Contents.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "images" : [ - { - "idiom" : "watch", - "scale" : "2x", - "screen-width" : "<=145" - }, - { - "idiom" : "watch", - "scale" : "2x", - "screen-width" : ">161" - }, - { - "idiom" : "watch", - "scale" : "2x", - "screen-width" : ">145" - }, - { - "idiom" : "watch", - "scale" : "2x", - "screen-width" : ">183" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Modular.imageset/Contents.json b/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Modular.imageset/Contents.json deleted file mode 100644 index aefef29..0000000 --- a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Modular.imageset/Contents.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "images" : [ - { - "idiom" : "watch", - "scale" : "2x", - "screen-width" : "<=145" - }, - { - "idiom" : "watch", - "scale" : "2x", - "screen-width" : ">161" - }, - { - "idiom" : "watch", - "scale" : "2x", - "screen-width" : ">145" - }, - { - "idiom" : "watch", - "scale" : "2x", - "screen-width" : ">183" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Utilitarian.imageset/Contents.json b/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Utilitarian.imageset/Contents.json deleted file mode 100644 index aefef29..0000000 --- a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Utilitarian.imageset/Contents.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "images" : [ - { - "idiom" : "watch", - "scale" : "2x", - "screen-width" : "<=145" - }, - { - "idiom" : "watch", - "scale" : "2x", - "screen-width" : ">161" - }, - { - "idiom" : "watch", - "scale" : "2x", - "screen-width" : ">145" - }, - { - "idiom" : "watch", - "scale" : "2x", - "screen-width" : ">183" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Contents.json b/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Contents.json deleted file mode 100644 index da4a164..0000000 --- a/Lazy Clock watchOS WatchKit Extension/Assets.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Lazy Clock watchOS WatchKit Extension/ComplicationController.swift b/Lazy Clock watchOS WatchKit Extension/ComplicationController.swift deleted file mode 100644 index dcca4cf..0000000 --- a/Lazy Clock watchOS WatchKit Extension/ComplicationController.swift +++ /dev/null @@ -1,99 +0,0 @@ -// -// ComplicationController.swift -// Lazy Clock watchOS WatchKit Extension -// -// Created by Hundter Biede on 9/29/19. -// Copyright © 2019 Hundter Biede. All rights reserved. -// - -import ClockKit - - -class ComplicationController: NSObject, CLKComplicationDataSource { - - func getCLKComplicationTemplate(for complicationFamily: CLKComplicationFamily, withTextHandler: CLKTextProvider) -> CLKComplicationTemplate { - let formatter: DateFormatter = { - let temp = DateFormatter() - temp.dateFormat = "HH:mm:ss" - return temp - }() - var nlt = NaturalLanguageTime.NatTime() - nlt.timeString = formatter.string(from: Date()) - - let imageProvider = CLKImageProvider(onePieceImage: UIImage(named: "complication")!) - - let template - switch complicationFamily { - case .graphicBezel: - template = CLKComplicationTemplateGraphicBezelCircularText() - template.textProvider = textProvider - - let circularTemplate = CLKComplicationTemplateGraphicCircularImage() - circularTemplate.imageProvider = imageProvider - template.circularTemplate = circularTemplate - break; - case .extraLarge: - template = CLKComplicationTemplateExtraLargeSimpleText() - template.textProvider = textProvider - break; - case .modularLarge: - template = CLKComplicationTemplateModularLargeStandardBody() - template.bodyTextProvider = textProvider - break; - case .utilitarianLarge: - template = CLKComplicationTemplateUtilitarianLargeFlat() - template.textProvider = textProvider - break; - default: - return nil - } - template.tintColor = .some(UIColor(red: 0.639, green: 0.157, blue: 0.133, alpha: 1.0)) - - return template - } - - // MARK: - Timeline Configuration - - func getSupportedTimeTravelDirections(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTimeTravelDirections) -> Void) { - handler([.forward, .backward]) - } - - func getTimelineStartDate(for complication: CLKComplication, withHandler handler: @escaping (Date?) -> Void) { - handler(nil) - } - - func getTimelineEndDate(for complication: CLKComplication, withHandler handler: @escaping (Date?) -> Void) { - handler(nil) - } - - func getPrivacyBehavior(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationPrivacyBehavior) -> Void) { - handler(.showOnLockScreen) - } - - // MARK: - Timeline Population - - func getCurrentTimelineEntry(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTimelineEntry?) -> Void) { - let textProvider = CLKTextProvider(format: "%@", arguments: nlt.getNatLangString()) - let template = getCLKComplicationTemplate(for: complication.family, withTextHandler: textProvider) - handler(template == nil ? nil : CLKComplicationTimelineEntry(date: Date(), complicationTemplate: template)) - } - - func getTimelineEntries(for complication: CLKComplication, before date: Date, limit: Int, withHandler handler: @escaping ([CLKComplicationTimelineEntry]?) -> Void) { - // Call the handler with the timeline entries prior to the given date - handler(nil) - } - - func getTimelineEntries(for complication: CLKComplication, after date: Date, limit: Int, withHandler handler: @escaping ([CLKComplicationTimelineEntry]?) -> Void) { - // Call the handler with the timeline entries after to the given date - handler(nil) - } - - // MARK: - Placeholder Templates - - func getLocalizableSampleTemplate(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTemplate?) -> Void) { - textProvider = CLKTextProvider(format: "%@", arguments: String.localizedWithFormat(NSLocalizedString("Half past %@", comment: "Half past the hour")), "three") - let template = getCLKComplicationTemplate(for: complication.family, withTextHandler: textProvider) - handler(template == nil ? nil : CLKComplicationTimelineEntry(date: Date(), complicationTemplate: template)) - } - -} diff --git a/Lazy Clock watchOS WatchKit Extension/ExtensionDelegate.swift b/Lazy Clock watchOS WatchKit Extension/ExtensionDelegate.swift deleted file mode 100644 index ce90781..0000000 --- a/Lazy Clock watchOS WatchKit Extension/ExtensionDelegate.swift +++ /dev/null @@ -1,56 +0,0 @@ -// -// ExtensionDelegate.swift -// Lazy Clock watchOS WatchKit Extension -// -// Created by Hundter Biede on 9/29/19. -// Copyright © 2019 Hundter Biede. All rights reserved. -// - -import WatchKit - -class ExtensionDelegate: NSObject, WKExtensionDelegate { - - func applicationDidFinishLaunching() { - // Perform any final initialization of your application. - } - - func applicationDidBecomeActive() { - // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. - } - - func applicationWillResignActive() { - // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. - // Use this method to pause ongoing tasks, disable timers, etc. - } - - func handle(_ backgroundTasks: Set) { - // Sent when the system needs to launch the application in the background to process tasks. Tasks arrive in a set, so loop through and process each one. - for task in backgroundTasks { - // Use a switch statement to check the task type - switch task { - case let backgroundTask as WKApplicationRefreshBackgroundTask: - // Be sure to complete the background task once you’re done. - backgroundTask.setTaskCompletedWithSnapshot(false) - case let snapshotTask as WKSnapshotRefreshBackgroundTask: - // Snapshot tasks have a unique completion call, make sure to set your expiration date - snapshotTask.setTaskCompleted(restoredDefaultState: true, estimatedSnapshotExpiration: Date.distantFuture, userInfo: nil) - case let connectivityTask as WKWatchConnectivityRefreshBackgroundTask: - // Be sure to complete the connectivity task once you’re done. - connectivityTask.setTaskCompletedWithSnapshot(false) - case let urlSessionTask as WKURLSessionRefreshBackgroundTask: - // Be sure to complete the URL session task once you’re done. - urlSessionTask.setTaskCompletedWithSnapshot(false) - case let relevantShortcutTask as WKRelevantShortcutRefreshBackgroundTask: - // Be sure to complete the relevant-shortcut task once you're done. - relevantShortcutTask.setTaskCompletedWithSnapshot(false) - case let intentDidRunTask as WKIntentDidRunRefreshBackgroundTask: - // Be sure to complete the intent-did-run task once you're done. - intentDidRunTask.setTaskCompletedWithSnapshot(false) - default: - // make sure to complete unhandled task types - task.setTaskCompletedWithSnapshot(false) - } - } - } - -} diff --git a/Lazy Clock watchOS WatchKit Extension/Info.plist b/Lazy Clock watchOS WatchKit Extension/Info.plist deleted file mode 100644 index cc78215..0000000 --- a/Lazy Clock watchOS WatchKit Extension/Info.plist +++ /dev/null @@ -1,54 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleDisplayName - Lazy Clock watchOS WatchKit Extension - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - $(PRODUCT_BUNDLE_PACKAGE_TYPE) - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1 - CLKComplicationPrincipalClass - $(PRODUCT_MODULE_NAME).ComplicationController - CLKComplicationSupportedFamilies - - CLKComplicationFamilyModularSmall - CLKComplicationFamilyModularLarge - CLKComplicationFamilyUtilitarianSmall - CLKComplicationFamilyUtilitarianSmallFlat - CLKComplicationFamilyUtilitarianLarge - CLKComplicationFamilyCircularSmall - CLKComplicationFamilyExtraLarge - CLKComplicationFamilyGraphicCorner - CLKComplicationFamilyGraphicBezel - CLKComplicationFamilyGraphicCircular - CLKComplicationFamilyGraphicRectangular - - NSExtension - - NSExtensionAttributes - - WKAppBundleIdentifier - com.hbiede.Lazy-Clock-watchOS.watchkitapp - - NSExtensionPointIdentifier - com.apple.watchkit - - WKExtensionDelegateClassName - $(PRODUCT_MODULE_NAME).ExtensionDelegate - WKWatchOnly - - - diff --git a/Lazy Clock.xcodeproj/project.pbxproj b/Lazy Clock.xcodeproj/project.pbxproj index 6fc6038..5181060 100644 --- a/Lazy Clock.xcodeproj/project.pbxproj +++ b/Lazy Clock.xcodeproj/project.pbxproj @@ -3,76 +3,48 @@ archiveVersion = 1; classes = { }; - objectVersion = 51; + objectVersion = 52; objects = { /* Begin PBXBuildFile section */ - 3D252FBD23407CE400CDC4D6 /* Lazy Clock watchOS WatchKit App.app in Embed Watch Content */ = {isa = PBXBuildFile; fileRef = 3D252FBC23407CE400CDC4D6 /* Lazy Clock watchOS WatchKit App.app */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; - 3D252FC323407CE400CDC4D6 /* Interface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3D252FC123407CE400CDC4D6 /* Interface.storyboard */; }; - 3D252FCC23407CE500CDC4D6 /* Lazy Clock watchOS WatchKit Extension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 3D252FCB23407CE400CDC4D6 /* Lazy Clock watchOS WatchKit Extension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; - 3D252FFD23407D7200CDC4D6 /* ExtensionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D252FF723407D7100CDC4D6 /* ExtensionDelegate.swift */; }; - 3D25300023407D7200CDC4D6 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3D252FFA23407D7200CDC4D6 /* Info.plist */; }; - 3D25300123407D7200CDC4D6 /* ComplicationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D252FFB23407D7200CDC4D6 /* ComplicationController.swift */; }; - 3D25300223407D7200CDC4D6 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3D252FFC23407D7200CDC4D6 /* Assets.xcassets */; }; - 3D25300323407F5600CDC4D6 /* NaturalLanguageTime.swift in Sources */ = {isa = PBXBuildFile; fileRef = C35A85CE211225460053AB48 /* NaturalLanguageTime.swift */; }; 3D25300523407F8400CDC4D6 /* NatLangViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D25300423407F8400CDC4D6 /* NatLangViewController.swift */; }; - 3D2530062340865E00CDC4D6 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 3DF128E4221A165200F32DF2 /* Localizable.strings */; }; - 3D2530072340865F00CDC4D6 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 3DF128E4221A165200F32DF2 /* Localizable.strings */; }; - 3D2530082340865F00CDC4D6 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 3DF128E4221A165200F32DF2 /* Localizable.strings */; }; - 3D25300A2340885900CDC4D6 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3D2530092340885900CDC4D6 /* Assets.xcassets */; }; 3D7F7CC7228BBCAF00239A71 /* Intents.intentdefinition in Sources */ = {isa = PBXBuildFile; fileRef = 3D7F7CCA228BBCAF00239A71 /* Intents.intentdefinition */; }; - 3D7F7CC8228BBCAF00239A71 /* Intents.intentdefinition in Sources */ = {isa = PBXBuildFile; fileRef = 3D7F7CCA228BBCAF00239A71 /* Intents.intentdefinition */; }; 3DF128DE221A165200F32DF2 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 3DF128E4221A165200F32DF2 /* Localizable.strings */; }; - 3DF128DF221A165200F32DF2 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 3DF128E4221A165200F32DF2 /* Localizable.strings */; }; - 3DF128E0221A165200F32DF2 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 3DF128E4221A165200F32DF2 /* Localizable.strings */; }; - C309EA7C215147140074AEAD /* LazyClockSpecifiedIntentHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = C309EA7B215147140074AEAD /* LazyClockSpecifiedIntentHandler.swift */; }; + 3E2DDF8729174DD500B12C11 /* WidgetLocalizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 3E2DDF8929174DD500B12C11 /* WidgetLocalizable.strings */; }; + 3E7564212917336C00358511 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C35A85CC211225460053AB48 /* Assets.xcassets */; }; + 3E7C185E29173BA2002A2CEB /* Colors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E7C185D29173BA2002A2CEB /* Colors.swift */; }; + 3E88C5B52917302E00EF491C /* LazyClockWatchApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E88C5B42917302E00EF491C /* LazyClockWatchApp.swift */; }; + 3E88C5B72917302E00EF491C /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E88C5B62917302E00EF491C /* ContentView.swift */; }; + 3E88C5BC2917302F00EF491C /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3E88C5BB2917302F00EF491C /* Preview Assets.xcassets */; }; + 3E88C5C02917304C00EF491C /* NaturalLanguageTime.swift in Sources */ = {isa = PBXBuildFile; fileRef = C35A85CE211225460053AB48 /* NaturalLanguageTime.swift */; }; + 3EC300B029171C8300500420 /* LazyClock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EC300AF29171C8300500420 /* LazyClock.swift */; }; + 3EC300CD2917211500500420 /* WidgetKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3EC3005F29170FC200500420 /* WidgetKit.framework */; }; + 3EC300CE2917211500500420 /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3EC3006129170FC200500420 /* SwiftUI.framework */; }; + 3EC300D32917211500500420 /* LazyClockWidget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EC300D22917211500500420 /* LazyClockWidget.swift */; }; + 3EC300D62917211600500420 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3EC300D52917211600500420 /* Assets.xcassets */; }; + 3EC300DC2917211600500420 /* LazyClockWidgetExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 3EC300CC2917211500500420 /* LazyClockWidgetExtension.appex */; platformFilter = ios; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; + 3EC300E02917218000500420 /* Intents.intentdefinition in Sources */ = {isa = PBXBuildFile; fileRef = 3D7F7CCA228BBCAF00239A71 /* Intents.intentdefinition */; }; + 3EC300EB291723E200500420 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 3DF128E4221A165200F32DF2 /* Localizable.strings */; }; + 3EC300EC291723E200500420 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 3DF128E4221A165200F32DF2 /* Localizable.strings */; }; + 3EC300ED291723F800500420 /* NaturalLanguageTime.swift in Sources */ = {isa = PBXBuildFile; fileRef = C35A85CE211225460053AB48 /* NaturalLanguageTime.swift */; }; + 3EC300F02917258700500420 /* LazyClockWidgetBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EC300D02917211500500420 /* LazyClockWidgetBundle.swift */; }; + 3EC300F92917266D00500420 /* LazyClock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EC300AF29171C8300500420 /* LazyClock.swift */; }; C310D0C52112BA54002302E8 /* NaturalLanguageTime.swift in Sources */ = {isa = PBXBuildFile; fileRef = C35A85CE211225460053AB48 /* NaturalLanguageTime.swift */; }; C310D0FC2112C47A002302E8 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C35A85CC211225460053AB48 /* Assets.xcassets */; }; - C31F82E6213C72AD00294F4F /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = C31F82E5213C72AD00294F4F /* LaunchScreen.storyboard */; }; - C332BA302134F1A000276726 /* NotificationCenter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C332BA2F2134F1A000276726 /* NotificationCenter.framework */; }; - C332BA332134F1A000276726 /* TodayViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C332BA322134F1A000276726 /* TodayViewController.swift */; }; - C332BA362134F1A000276726 /* TodayViewInterface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = C332BA342134F1A000276726 /* TodayViewInterface.storyboard */; }; - C332BA3A2134F1A000276726 /* TodayView.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = C332BA2E2134F1A000276726 /* TodayView.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; - C332BA3E2134F20F00276726 /* NaturalLanguageTime.swift in Sources */ = {isa = PBXBuildFile; fileRef = C35A85CE211225460053AB48 /* NaturalLanguageTime.swift */; }; - C332BA842134F83900276726 /* IntentHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = C332BA832134F83900276726 /* IntentHandler.swift */; }; - C332BA982134F83900276726 /* LazyIntent.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = C332BA812134F83900276726 /* LazyIntent.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; - C332BAA22134F8AD00276726 /* NaturalLanguageTime.swift in Sources */ = {isa = PBXBuildFile; fileRef = C35A85CE211225460053AB48 /* NaturalLanguageTime.swift */; }; - C332BAA72134F9AD00276726 /* LazyClockIntentHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = C332BAA62134F9AD00276726 /* LazyClockIntentHandler.swift */; }; C344ADEC2134B3C000638455 /* SettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C344ADEB2134B3C000638455 /* SettingsViewController.swift */; }; C35A85D3211225470053AB48 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = C35A85CF211225460053AB48 /* AppDelegate.swift */; }; C35A85D82112255F0053AB48 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = C35A85D42112255F0053AB48 /* Main.storyboard */; }; - C3B218CA21C44C1800B3AFAB /* Lazy_ClockTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3B218C921C44C1800B3AFAB /* Lazy_ClockTests.swift */; }; + C3B218CA21C44C1800B3AFAB /* LazyClockTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3B218C921C44C1800B3AFAB /* LazyClockTests.swift */; }; C3B218D121C44D4100B3AFAB /* NaturalLanguageTime.swift in Sources */ = {isa = PBXBuildFile; fileRef = C35A85CE211225460053AB48 /* NaturalLanguageTime.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 3D252FBE23407CE400CDC4D6 /* PBXContainerItemProxy */ = { + 3EC300DA2917211600500420 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = C35A85AB21121A0B0053AB48 /* Project object */; proxyType = 1; - remoteGlobalIDString = 3D252FBB23407CE400CDC4D6; - remoteInfo = "Lazy Clock watchOS WatchKit App"; - }; - 3D252FCD23407CE500CDC4D6 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = C35A85AB21121A0B0053AB48 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 3D252FCA23407CE400CDC4D6; - remoteInfo = "Lazy Clock watchOS WatchKit Extension"; - }; - C332BA382134F1A000276726 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = C35A85AB21121A0B0053AB48 /* Project object */; - proxyType = 1; - remoteGlobalIDString = C332BA2D2134F1A000276726; - remoteInfo = TodayView; - }; - C332BA962134F83900276726 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = C35A85AB21121A0B0053AB48 /* Project object */; - proxyType = 1; - remoteGlobalIDString = C332BA802134F83900276726; - remoteInfo = LazyIntent; + remoteGlobalIDString = 3EC300CB2917211500500420; + remoteInfo = LazyClockWidgetExtension; }; C3B218CC21C44C1800B3AFAB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -84,38 +56,15 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ - 3D252FE123407CE500CDC4D6 /* Embed App Extensions */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 13; - files = ( - 3D252FCC23407CE500CDC4D6 /* Lazy Clock watchOS WatchKit Extension.appex in Embed App Extensions */, - ); - name = "Embed App Extensions"; - runOnlyForDeploymentPostprocessing = 0; - }; - 3D252FE523407CE500CDC4D6 /* Embed Watch Content */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "$(CONTENTS_FOLDER_PATH)/Watch"; - dstSubfolderSpec = 16; - files = ( - 3D252FBD23407CE400CDC4D6 /* Lazy Clock watchOS WatchKit App.app in Embed Watch Content */, - ); - name = "Embed Watch Content"; - runOnlyForDeploymentPostprocessing = 0; - }; - C310D0C02112B7CA002302E8 /* Embed App Extensions */ = { + C310D0C02112B7CA002302E8 /* Embed Foundation Extensions */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 13; files = ( - C332BA3A2134F1A000276726 /* TodayView.appex in Embed App Extensions */, - C332BA982134F83900276726 /* LazyIntent.appex in Embed App Extensions */, + 3EC300DC2917211600500420 /* LazyClockWidgetExtension.appex in Embed Foundation Extensions */, ); - name = "Embed App Extensions"; + name = "Embed Foundation Extensions"; runOnlyForDeploymentPostprocessing = 0; }; C330A2BE2140B29E0046DC87 /* Embed Watch Content */ = { @@ -131,44 +80,40 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 3D252FB923407CE400CDC4D6 /* Lazy Clock.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Lazy Clock.app"; sourceTree = BUILT_PRODUCTS_DIR; }; - 3D252FBC23407CE400CDC4D6 /* Lazy Clock watchOS WatchKit App.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Lazy Clock watchOS WatchKit App.app"; sourceTree = BUILT_PRODUCTS_DIR; }; - 3D252FC223407CE400CDC4D6 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Interface.storyboard; sourceTree = ""; }; - 3D252FC623407CE400CDC4D6 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 3D252FCB23407CE400CDC4D6 /* Lazy Clock watchOS WatchKit Extension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "Lazy Clock watchOS WatchKit Extension.appex"; sourceTree = BUILT_PRODUCTS_DIR; }; - 3D252FF723407D7100CDC4D6 /* ExtensionDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExtensionDelegate.swift; sourceTree = ""; }; - 3D252FFA23407D7200CDC4D6 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 3D252FFB23407D7200CDC4D6 /* ComplicationController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ComplicationController.swift; sourceTree = ""; }; - 3D252FFC23407D7200CDC4D6 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 3D25300423407F8400CDC4D6 /* NatLangViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NatLangViewController.swift; sourceTree = ""; }; - 3D2530092340885900CDC4D6 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 3D7F7CC9228BBCAF00239A71 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.intentdefinition; name = Base; path = Base.lproj/Intents.intentdefinition; sourceTree = ""; }; 3D7F7CCC228BBCB100239A71 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Intents.strings; sourceTree = ""; }; 3D7F7CCE228BBCB200239A71 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Intents.strings; sourceTree = ""; }; 3D7F7CD0228BBCB300239A71 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Intents.strings; sourceTree = ""; }; 3D7F7CD2228BBCB400239A71 /* en-GB */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "en-GB"; path = "en-GB.lproj/Intents.strings"; sourceTree = ""; }; 3DF128DB221A164D00F32DF2 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Main.strings; sourceTree = ""; }; - 3DF128DC221A164D00F32DF2 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/TodayViewInterface.strings; sourceTree = ""; }; 3DF128E3221A165200F32DF2 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; 3DF128EB221A23A200F32DF2 /* en-GB */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "en-GB"; path = "en-GB.lproj/Main.strings"; sourceTree = ""; }; - 3DF128EC221A23A200F32DF2 /* en-GB */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "en-GB"; path = "en-GB.lproj/TodayViewInterface.strings"; sourceTree = ""; }; 3DF128EE221A23A200F32DF2 /* en-GB */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "en-GB"; path = "en-GB.lproj/Localizable.strings"; sourceTree = ""; }; 3DF128EF221A240300F32DF2 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Main.strings; sourceTree = ""; }; 3DF128F0221A240300F32DF2 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = ""; }; 3DF128F1221A27D800F32DF2 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Main.strings; sourceTree = ""; }; 3DF128F2221A27D800F32DF2 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Localizable.strings; sourceTree = ""; }; - C309EA7B215147140074AEAD /* LazyClockSpecifiedIntentHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LazyClockSpecifiedIntentHandler.swift; sourceTree = ""; }; - C31F82E5213C72AD00294F4F /* LaunchScreen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = ""; }; - C332BA2E2134F1A000276726 /* TodayView.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = TodayView.appex; sourceTree = BUILT_PRODUCTS_DIR; }; + 3E2DDF8829174DD500B12C11 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/WidgetLocalizable.strings; sourceTree = ""; }; + 3E2DDF8B29174DD900B12C11 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/WidgetLocalizable.strings; sourceTree = ""; }; + 3E2DDF8C29174DDA00B12C11 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/WidgetLocalizable.strings; sourceTree = ""; }; + 3E7C185D29173BA2002A2CEB /* Colors.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Colors.swift; sourceTree = ""; }; + 3E88C5AD29172A5700EF491C /* LazyClockWidgetExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = LazyClockWidgetExtension.entitlements; sourceTree = ""; }; + 3E88C5B22917302E00EF491C /* Lazy Clock.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Lazy Clock.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 3E88C5B42917302E00EF491C /* LazyClockWatchApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LazyClockWatchApp.swift; sourceTree = ""; }; + 3E88C5B62917302E00EF491C /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + 3E88C5BB2917302F00EF491C /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + 3EC3005F29170FC200500420 /* WidgetKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WidgetKit.framework; path = System/Library/Frameworks/WidgetKit.framework; sourceTree = SDKROOT; }; + 3EC3006129170FC200500420 /* SwiftUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftUI.framework; path = System/Library/Frameworks/SwiftUI.framework; sourceTree = SDKROOT; }; + 3EC300AF29171C8300500420 /* LazyClock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LazyClock.swift; sourceTree = ""; }; + 3EC300B629171F7300500420 /* LazyClockWatch Watch App.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; name = "LazyClockWatch Watch App.app"; path = "/Users/ebiede/Desktop/Code/Personal Projects/Lazy-Clock/build/Debug-watchos/LazyClockWatch Watch App.app"; sourceTree = ""; }; + 3EC300CC2917211500500420 /* LazyClockWidgetExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = LazyClockWidgetExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; }; + 3EC300D02917211500500420 /* LazyClockWidgetBundle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LazyClockWidgetBundle.swift; sourceTree = ""; }; + 3EC300D22917211500500420 /* LazyClockWidget.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LazyClockWidget.swift; sourceTree = ""; }; + 3EC300D52917211600500420 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 3EC300D72917211600500420 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; C332BA2F2134F1A000276726 /* NotificationCenter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = NotificationCenter.framework; path = System/Library/Frameworks/NotificationCenter.framework; sourceTree = SDKROOT; }; - C332BA322134F1A000276726 /* TodayViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TodayViewController.swift; sourceTree = ""; }; - C332BA352134F1A000276726 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/TodayViewInterface.storyboard; sourceTree = ""; }; - C332BA372134F1A000276726 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; C332BA582134F61500276726 /* Lazy Clock.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "Lazy Clock.entitlements"; sourceTree = ""; }; - C332BA812134F83900276726 /* LazyIntent.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = LazyIntent.appex; sourceTree = BUILT_PRODUCTS_DIR; }; - C332BA832134F83900276726 /* IntentHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IntentHandler.swift; sourceTree = ""; }; - C332BA852134F83900276726 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - C332BAA62134F9AD00276726 /* LazyClockIntentHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LazyClockIntentHandler.swift; sourceTree = ""; }; C344ADEB2134B3C000638455 /* SettingsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsViewController.swift; sourceTree = ""; }; C344ADED2134BACD00638455 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; C35A85B321121A0B0053AB48 /* Lazy Clock.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Lazy Clock.app"; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -177,30 +122,24 @@ C35A85CE211225460053AB48 /* NaturalLanguageTime.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = NaturalLanguageTime.swift; path = "Lazy Clock/NaturalLanguageTime.swift"; sourceTree = SOURCE_ROOT; }; C35A85CF211225460053AB48 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AppDelegate.swift; path = "Lazy Clock/AppDelegate.swift"; sourceTree = SOURCE_ROOT; }; C3B218C721C44C1800B3AFAB /* Lazy ClockTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Lazy ClockTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; - C3B218C921C44C1800B3AFAB /* Lazy_ClockTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Lazy_ClockTests.swift; sourceTree = ""; }; + C3B218C921C44C1800B3AFAB /* LazyClockTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LazyClockTests.swift; sourceTree = ""; }; C3B218CB21C44C1800B3AFAB /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 3D252FC823407CE400CDC4D6 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - C332BA2B2134F1A000276726 /* Frameworks */ = { + 3E88C5AF2917302E00EF491C /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C332BA302134F1A000276726 /* NotificationCenter.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - C332BA7E2134F83900276726 /* Frameworks */ = { + 3EC300C92917211500500420 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 3EC300CE2917211500500420 /* SwiftUI.framework in Frameworks */, + 3EC300CD2917211500500420 /* WidgetKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -221,67 +160,66 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 3D252FC023407CE400CDC4D6 /* Lazy Clock watchOS WatchKit App */ = { + 3E88C5AB2917288000EF491C /* Recovered References */ = { isa = PBXGroup; children = ( - 3D252FC123407CE400CDC4D6 /* Interface.storyboard */, - 3D252FC623407CE400CDC4D6 /* Info.plist */, - 3D2530092340885900CDC4D6 /* Assets.xcassets */, + 3EC300B629171F7300500420 /* LazyClockWatch Watch App.app */, ); - path = "Lazy Clock watchOS WatchKit App"; + name = "Recovered References"; sourceTree = ""; }; - 3D252FCF23407CE500CDC4D6 /* Lazy Clock watchOS WatchKit Extension */ = { + 3E88C5B32917302E00EF491C /* LazyClockWatch Watch App */ = { isa = PBXGroup; children = ( - 3D252FFC23407D7200CDC4D6 /* Assets.xcassets */, - 3D252FFB23407D7200CDC4D6 /* ComplicationController.swift */, - 3D252FF723407D7100CDC4D6 /* ExtensionDelegate.swift */, - 3D252FFA23407D7200CDC4D6 /* Info.plist */, + 3E88C5B42917302E00EF491C /* LazyClockWatchApp.swift */, + 3E88C5B62917302E00EF491C /* ContentView.swift */, + 3E88C5BA2917302F00EF491C /* Preview Content */, ); - path = "Lazy Clock watchOS WatchKit Extension"; + path = "LazyClockWatch Watch App"; sourceTree = ""; }; - C310D0B02112B7CA002302E8 /* Frameworks */ = { + 3E88C5BA2917302F00EF491C /* Preview Content */ = { isa = PBXGroup; children = ( - C332BA2F2134F1A000276726 /* NotificationCenter.framework */, + 3E88C5BB2917302F00EF491C /* Preview Assets.xcassets */, ); - name = Frameworks; + path = "Preview Content"; sourceTree = ""; }; - C332BA312134F1A000276726 /* TodayView */ = { + 3EC300CF2917211500500420 /* LazyClockWidget */ = { isa = PBXGroup; children = ( - C332BA322134F1A000276726 /* TodayViewController.swift */, - C332BA342134F1A000276726 /* TodayViewInterface.storyboard */, - C332BA372134F1A000276726 /* Info.plist */, + 3EC300D02917211500500420 /* LazyClockWidgetBundle.swift */, + 3EC300D22917211500500420 /* LazyClockWidget.swift */, + 3EC300D52917211600500420 /* Assets.xcassets */, + 3EC300D72917211600500420 /* Info.plist */, + 3E2DDF8929174DD500B12C11 /* WidgetLocalizable.strings */, ); - path = TodayView; + path = LazyClockWidget; sourceTree = ""; }; - C332BA822134F83900276726 /* LazyIntent */ = { + C310D0B02112B7CA002302E8 /* Frameworks */ = { isa = PBXGroup; children = ( - C332BA832134F83900276726 /* IntentHandler.swift */, - C332BAA62134F9AD00276726 /* LazyClockIntentHandler.swift */, - C309EA7B215147140074AEAD /* LazyClockSpecifiedIntentHandler.swift */, - C332BA852134F83900276726 /* Info.plist */, + C332BA2F2134F1A000276726 /* NotificationCenter.framework */, + 3EC3005F29170FC200500420 /* WidgetKit.framework */, + 3EC3006129170FC200500420 /* SwiftUI.framework */, ); - path = LazyIntent; + name = Frameworks; sourceTree = ""; }; C35A85AA21121A0B0053AB48 = { isa = PBXGroup; children = ( + 3E88C5AD29172A5700EF491C /* LazyClockWidgetExtension.entitlements */, + 3EC300AF29171C8300500420 /* LazyClock.swift */, C35A85B521121A0B0053AB48 /* Lazy Clock */, - C332BA312134F1A000276726 /* TodayView */, - C332BA822134F83900276726 /* LazyIntent */, C3B218C821C44C1800B3AFAB /* Lazy ClockTests */, - 3D252FC023407CE400CDC4D6 /* Lazy Clock watchOS WatchKit App */, - 3D252FCF23407CE500CDC4D6 /* Lazy Clock watchOS WatchKit Extension */, + 3EC300CF2917211500500420 /* LazyClockWidget */, + 3E88C5B32917302E00EF491C /* LazyClockWatch Watch App */, C310D0B02112B7CA002302E8 /* Frameworks */, C35A85B421121A0B0053AB48 /* Products */, + 3E88C5AB2917288000EF491C /* Recovered References */, ); sourceTree = ""; }; @@ -289,12 +227,9 @@ isa = PBXGroup; children = ( C35A85B321121A0B0053AB48 /* Lazy Clock.app */, - C332BA2E2134F1A000276726 /* TodayView.appex */, - C332BA812134F83900276726 /* LazyIntent.appex */, C3B218C721C44C1800B3AFAB /* Lazy ClockTests.xctest */, - 3D252FB923407CE400CDC4D6 /* Lazy Clock.app */, - 3D252FBC23407CE400CDC4D6 /* Lazy Clock watchOS WatchKit App.app */, - 3D252FCB23407CE400CDC4D6 /* Lazy Clock watchOS WatchKit Extension.appex */, + 3EC300CC2917211500500420 /* LazyClockWidgetExtension.appex */, + 3E88C5B22917302E00EF491C /* Lazy Clock.app */, ); name = Products; sourceTree = ""; @@ -302,15 +237,15 @@ C35A85B521121A0B0053AB48 /* Lazy Clock */ = { isa = PBXGroup; children = ( + C35A85CC211225460053AB48 /* Assets.xcassets */, 3DF128E4221A165200F32DF2 /* Localizable.strings */, C332BA582134F61500276726 /* Lazy Clock.entitlements */, - C35A85CC211225460053AB48 /* Assets.xcassets */, C35A85CF211225460053AB48 /* AppDelegate.swift */, + 3E7C185D29173BA2002A2CEB /* Colors.swift */, C344ADEB2134B3C000638455 /* SettingsViewController.swift */, 3D25300423407F8400CDC4D6 /* NatLangViewController.swift */, C35A85CE211225460053AB48 /* NaturalLanguageTime.swift */, C35A85D42112255F0053AB48 /* Main.storyboard */, - C31F82E5213C72AD00294F4F /* LaunchScreen.storyboard */, C35A85CD211225460053AB48 /* Info.plist */, 3D7F7CCA228BBCAF00239A71 /* Intents.intentdefinition */, ); @@ -320,7 +255,7 @@ C3B218C821C44C1800B3AFAB /* Lazy ClockTests */ = { isa = PBXGroup; children = ( - C3B218C921C44C1800B3AFAB /* Lazy_ClockTests.swift */, + C3B218C921C44C1800B3AFAB /* LazyClockTests.swift */, C3B218CB21C44C1800B3AFAB /* Info.plist */, ); path = "Lazy ClockTests"; @@ -329,89 +264,38 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ - 3D252FB823407CE400CDC4D6 /* Lazy Clock watchOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = 3D252FE623407CE500CDC4D6 /* Build configuration list for PBXNativeTarget "Lazy Clock watchOS" */; - buildPhases = ( - 3D252FB723407CE400CDC4D6 /* Resources */, - 3D252FE523407CE500CDC4D6 /* Embed Watch Content */, - ); - buildRules = ( - ); - dependencies = ( - 3D252FBF23407CE400CDC4D6 /* PBXTargetDependency */, - ); - name = "Lazy Clock watchOS"; - productName = "Lazy Clock watchOS"; - productReference = 3D252FB923407CE400CDC4D6 /* Lazy Clock.app */; - productType = "com.apple.product-type.application.watchapp2-container"; - }; - 3D252FBB23407CE400CDC4D6 /* Lazy Clock watchOS WatchKit App */ = { - isa = PBXNativeTarget; - buildConfigurationList = 3D252FE223407CE500CDC4D6 /* Build configuration list for PBXNativeTarget "Lazy Clock watchOS WatchKit App" */; - buildPhases = ( - 3D252FBA23407CE400CDC4D6 /* Resources */, - 3D252FE123407CE500CDC4D6 /* Embed App Extensions */, - ); - buildRules = ( - ); - dependencies = ( - 3D252FCE23407CE500CDC4D6 /* PBXTargetDependency */, - ); - name = "Lazy Clock watchOS WatchKit App"; - productName = "Lazy Clock watchOS WatchKit App"; - productReference = 3D252FBC23407CE400CDC4D6 /* Lazy Clock watchOS WatchKit App.app */; - productType = "com.apple.product-type.application.watchapp2"; - }; - 3D252FCA23407CE400CDC4D6 /* Lazy Clock watchOS WatchKit Extension */ = { - isa = PBXNativeTarget; - buildConfigurationList = 3D252FDE23407CE500CDC4D6 /* Build configuration list for PBXNativeTarget "Lazy Clock watchOS WatchKit Extension" */; - buildPhases = ( - 3D252FC723407CE400CDC4D6 /* Sources */, - 3D252FC823407CE400CDC4D6 /* Frameworks */, - 3D252FC923407CE400CDC4D6 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "Lazy Clock watchOS WatchKit Extension"; - productName = "Lazy Clock watchOS WatchKit Extension"; - productReference = 3D252FCB23407CE400CDC4D6 /* Lazy Clock watchOS WatchKit Extension.appex */; - productType = "com.apple.product-type.watchkit2-extension"; - }; - C332BA2D2134F1A000276726 /* TodayView */ = { + 3E88C5B12917302E00EF491C /* LazyClockWatch */ = { isa = PBXNativeTarget; - buildConfigurationList = C332BA3B2134F1A000276726 /* Build configuration list for PBXNativeTarget "TodayView" */; + buildConfigurationList = 3E88C5BD2917302F00EF491C /* Build configuration list for PBXNativeTarget "LazyClockWatch" */; buildPhases = ( - C332BA2A2134F1A000276726 /* Sources */, - C332BA2B2134F1A000276726 /* Frameworks */, - C332BA2C2134F1A000276726 /* Resources */, + 3E88C5AE2917302E00EF491C /* Sources */, + 3E88C5AF2917302E00EF491C /* Frameworks */, + 3E88C5B02917302E00EF491C /* Resources */, ); buildRules = ( ); dependencies = ( ); - name = TodayView; - productName = TodayView; - productReference = C332BA2E2134F1A000276726 /* TodayView.appex */; - productType = "com.apple.product-type.app-extension"; + name = LazyClockWatch; + productName = "LazyClockWatch Watch App"; + productReference = 3E88C5B22917302E00EF491C /* Lazy Clock.app */; + productType = "com.apple.product-type.application"; }; - C332BA802134F83900276726 /* LazyIntent */ = { + 3EC300CB2917211500500420 /* LazyClockWidgetExtension */ = { isa = PBXNativeTarget; - buildConfigurationList = C332BA9C2134F83900276726 /* Build configuration list for PBXNativeTarget "LazyIntent" */; + buildConfigurationList = 3EC300DD2917211600500420 /* Build configuration list for PBXNativeTarget "LazyClockWidgetExtension" */; buildPhases = ( - C332BA7D2134F83900276726 /* Sources */, - C332BA7E2134F83900276726 /* Frameworks */, - C332BA7F2134F83900276726 /* Resources */, + 3EC300C82917211500500420 /* Sources */, + 3EC300C92917211500500420 /* Frameworks */, + 3EC300CA2917211500500420 /* Resources */, ); buildRules = ( ); dependencies = ( ); - name = LazyIntent; - productName = LazyIntent; - productReference = C332BA812134F83900276726 /* LazyIntent.appex */; + name = LazyClockWidgetExtension; + productName = LazyClockWidgetExtension; + productReference = 3EC300CC2917211500500420 /* LazyClockWidgetExtension.appex */; productType = "com.apple.product-type.app-extension"; }; C35A85B221121A0B0053AB48 /* Lazy Clock */ = { @@ -421,14 +305,13 @@ C35A85AF21121A0B0053AB48 /* Sources */, C35A85B021121A0B0053AB48 /* Frameworks */, C35A85B121121A0B0053AB48 /* Resources */, - C310D0C02112B7CA002302E8 /* Embed App Extensions */, + C310D0C02112B7CA002302E8 /* Embed Foundation Extensions */, C330A2BE2140B29E0046DC87 /* Embed Watch Content */, ); buildRules = ( ); dependencies = ( - C332BA392134F1A000276726 /* PBXTargetDependency */, - C332BA972134F83900276726 /* PBXTargetDependency */, + 3EC300DB2917211600500420 /* PBXTargetDependency */, ); name = "Lazy Clock"; productName = "Lazy Time"; @@ -459,27 +342,15 @@ C35A85AB21121A0B0053AB48 /* Project object */ = { isa = PBXProject; attributes = { - LastSwiftUpdateCheck = 1110; - LastUpgradeCheck = 1000; + LastSwiftUpdateCheck = 1410; + LastUpgradeCheck = 1410; ORGANIZATIONNAME = "Hundter Biede"; TargetAttributes = { - 3D252FB823407CE400CDC4D6 = { - CreatedOnToolsVersion = 11.1; - }; - 3D252FBB23407CE400CDC4D6 = { - CreatedOnToolsVersion = 11.1; + 3E88C5B12917302E00EF491C = { + CreatedOnToolsVersion = 14.1; }; - 3D252FCA23407CE400CDC4D6 = { - CreatedOnToolsVersion = 11.1; - LastSwiftMigration = 1110; - }; - C332BA2D2134F1A000276726 = { - CreatedOnToolsVersion = 10.0; - LastSwiftMigration = 1020; - }; - C332BA802134F83900276726 = { - CreatedOnToolsVersion = 10.0; - LastSwiftMigration = 1020; + 3EC300CB2917211500500420 = { + CreatedOnToolsVersion = 14.1; }; C35A85B221121A0B0053AB48 = { CreatedOnToolsVersion = 10.0; @@ -517,59 +388,30 @@ projectRoot = ""; targets = ( C35A85B221121A0B0053AB48 /* Lazy Clock */, - C332BA2D2134F1A000276726 /* TodayView */, - C332BA802134F83900276726 /* LazyIntent */, C3B218C621C44C1800B3AFAB /* Lazy ClockTests */, - 3D252FB823407CE400CDC4D6 /* Lazy Clock watchOS */, - 3D252FBB23407CE400CDC4D6 /* Lazy Clock watchOS WatchKit App */, - 3D252FCA23407CE400CDC4D6 /* Lazy Clock watchOS WatchKit Extension */, + 3EC300CB2917211500500420 /* LazyClockWidgetExtension */, + 3E88C5B12917302E00EF491C /* LazyClockWatch */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - 3D252FB723407CE400CDC4D6 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 3D2530062340865E00CDC4D6 /* Localizable.strings in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 3D252FBA23407CE400CDC4D6 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 3D252FC323407CE400CDC4D6 /* Interface.storyboard in Resources */, - 3D25300A2340885900CDC4D6 /* Assets.xcassets in Resources */, - 3D2530072340865F00CDC4D6 /* Localizable.strings in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 3D252FC923407CE400CDC4D6 /* Resources */ = { + 3E88C5B02917302E00EF491C /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 3D25300223407D7200CDC4D6 /* Assets.xcassets in Resources */, - 3D2530082340865F00CDC4D6 /* Localizable.strings in Resources */, - 3D25300023407D7200CDC4D6 /* Info.plist in Resources */, + 3E88C5BC2917302F00EF491C /* Preview Assets.xcassets in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - C332BA2C2134F1A000276726 /* Resources */ = { + 3EC300CA2917211500500420 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 3DF128DF221A165200F32DF2 /* Localizable.strings in Resources */, - C332BA362134F1A000276726 /* TodayViewInterface.storyboard in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - C332BA7F2134F83900276726 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 3DF128E0221A165200F32DF2 /* Localizable.strings in Resources */, + 3EC300D62917211600500420 /* Assets.xcassets in Resources */, + 3E2DDF8729174DD500B12C11 /* WidgetLocalizable.strings in Resources */, + 3E7564212917336C00358511 /* Assets.xcassets in Resources */, + 3EC300EB291723E200500420 /* Localizable.strings in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -580,7 +422,6 @@ 3DF128DE221A165200F32DF2 /* Localizable.strings in Resources */, C35A85D82112255F0053AB48 /* Main.storyboard in Resources */, C310D0FC2112C47A002302E8 /* Assets.xcassets in Resources */, - C31F82E6213C72AD00294F4F /* LaunchScreen.storyboard in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -588,40 +429,32 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 3EC300EC291723E200500420 /* Localizable.strings in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - 3D252FC723407CE400CDC4D6 /* Sources */ = { + 3E88C5AE2917302E00EF491C /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 3D25300323407F5600CDC4D6 /* NaturalLanguageTime.swift in Sources */, - 3D25300123407D7200CDC4D6 /* ComplicationController.swift in Sources */, - 3D252FFD23407D7200CDC4D6 /* ExtensionDelegate.swift in Sources */, + 3E88C5C02917304C00EF491C /* NaturalLanguageTime.swift in Sources */, + 3E88C5B72917302E00EF491C /* ContentView.swift in Sources */, + 3E88C5B52917302E00EF491C /* LazyClockWatchApp.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - C332BA2A2134F1A000276726 /* Sources */ = { + 3EC300C82917211500500420 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - C332BA3E2134F20F00276726 /* NaturalLanguageTime.swift in Sources */, - C332BA332134F1A000276726 /* TodayViewController.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - C332BA7D2134F83900276726 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - C309EA7C215147140074AEAD /* LazyClockSpecifiedIntentHandler.swift in Sources */, - C332BAA22134F8AD00276726 /* NaturalLanguageTime.swift in Sources */, - C332BA842134F83900276726 /* IntentHandler.swift in Sources */, - 3D7F7CC8228BBCAF00239A71 /* Intents.intentdefinition in Sources */, - C332BAA72134F9AD00276726 /* LazyClockIntentHandler.swift in Sources */, + 3EC300F92917266D00500420 /* LazyClock.swift in Sources */, + 3EC300F02917258700500420 /* LazyClockWidgetBundle.swift in Sources */, + 3EC300D32917211500500420 /* LazyClockWidget.swift in Sources */, + 3EC300ED291723F800500420 /* NaturalLanguageTime.swift in Sources */, + 3EC300E02917218000500420 /* Intents.intentdefinition in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -631,6 +464,8 @@ files = ( 3D7F7CC7228BBCAF00239A71 /* Intents.intentdefinition in Sources */, C310D0C52112BA54002302E8 /* NaturalLanguageTime.swift in Sources */, + 3EC300B029171C8300500420 /* LazyClock.swift in Sources */, + 3E7C185E29173BA2002A2CEB /* Colors.swift in Sources */, C344ADEC2134B3C000638455 /* SettingsViewController.swift in Sources */, 3D25300523407F8400CDC4D6 /* NatLangViewController.swift in Sources */, C35A85D3211225470053AB48 /* AppDelegate.swift in Sources */, @@ -642,32 +477,18 @@ buildActionMask = 2147483647; files = ( C3B218D121C44D4100B3AFAB /* NaturalLanguageTime.swift in Sources */, - C3B218CA21C44C1800B3AFAB /* Lazy_ClockTests.swift in Sources */, + C3B218CA21C44C1800B3AFAB /* LazyClockTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 3D252FBF23407CE400CDC4D6 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 3D252FBB23407CE400CDC4D6 /* Lazy Clock watchOS WatchKit App */; - targetProxy = 3D252FBE23407CE400CDC4D6 /* PBXContainerItemProxy */; - }; - 3D252FCE23407CE500CDC4D6 /* PBXTargetDependency */ = { + 3EC300DB2917211600500420 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = 3D252FCA23407CE400CDC4D6 /* Lazy Clock watchOS WatchKit Extension */; - targetProxy = 3D252FCD23407CE500CDC4D6 /* PBXContainerItemProxy */; - }; - C332BA392134F1A000276726 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = C332BA2D2134F1A000276726 /* TodayView */; - targetProxy = C332BA382134F1A000276726 /* PBXContainerItemProxy */; - }; - C332BA972134F83900276726 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = C332BA802134F83900276726 /* LazyIntent */; - targetProxy = C332BA962134F83900276726 /* PBXContainerItemProxy */; + platformFilter = ios; + target = 3EC300CB2917211500500420 /* LazyClockWidgetExtension */; + targetProxy = 3EC300DA2917211600500420 /* PBXContainerItemProxy */; }; C3B218CD21C44C1800B3AFAB /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -677,14 +498,6 @@ /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ - 3D252FC123407CE400CDC4D6 /* Interface.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 3D252FC223407CE400CDC4D6 /* Base */, - ); - name = Interface.storyboard; - sourceTree = ""; - }; 3D7F7CCA228BBCAF00239A71 /* Intents.intentdefinition */ = { isa = PBXVariantGroup; children = ( @@ -708,14 +521,14 @@ name = Localizable.strings; sourceTree = ""; }; - C332BA342134F1A000276726 /* TodayViewInterface.storyboard */ = { + 3E2DDF8929174DD500B12C11 /* WidgetLocalizable.strings */ = { isa = PBXVariantGroup; children = ( - C332BA352134F1A000276726 /* Base */, - 3DF128DC221A164D00F32DF2 /* en */, - 3DF128EC221A23A200F32DF2 /* en-GB */, + 3E2DDF8829174DD500B12C11 /* en */, + 3E2DDF8B29174DD900B12C11 /* fr */, + 3E2DDF8C29174DDA00B12C11 /* es */, ); - name = TodayViewInterface.storyboard; + name = WidgetLocalizable.strings; sourceTree = ""; }; C35A85D42112255F0053AB48 /* Main.storyboard */ = { @@ -733,198 +546,123 @@ /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ - 3D252FDF23407CE500CDC4D6 /* Debug */ = { + 3E88C5BE2917302F00EF491C /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ASSETCATALOG_COMPILER_COMPLICATION_NAME = Complication; - CLANG_ENABLE_MODULES = YES; + ASSETCATALOG_COMPILER_APPICON_NAME = LazyClock; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_ASSET_PATHS = "\"Lazy Clock watchOS WatchKit Extension/Preview Content\""; + CURRENT_PROJECT_VERSION = "$(LC_Build)"; + DEVELOPMENT_ASSET_PATHS = "\"LazyClockWatch Watch App/Preview Content\""; DEVELOPMENT_TEAM = 69RV8YV62P; ENABLE_PREVIEWS = YES; - INFOPLIST_FILE = "Lazy Clock watchOS WatchKit Extension/Info.plist"; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; + INFOPLIST_KEY_WKCompanionAppBundleIdentifier = ""; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", - "@executable_path/../../Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = "com.hbiede.Lazy-Clock-watchOS.watchkitapp.watchkitextension"; - PRODUCT_NAME = "${TARGET_NAME}"; + MARKETING_VERSION = "$(LC_Version)"; + PRODUCT_BUNDLE_IDENTIFIER = .watchkitapp; + PRODUCT_NAME = "Lazy Clock"; SDKROOT = watchos; SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 4; - WATCHOS_DEPLOYMENT_TARGET = 6.0; + WATCHOS_DEPLOYMENT_TARGET = 9.0; }; name = Debug; }; - 3D252FE023407CE500CDC4D6 /* Release */ = { + 3E88C5BF2917302F00EF491C /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ASSETCATALOG_COMPILER_COMPLICATION_NAME = Complication; - CLANG_ENABLE_MODULES = YES; + ASSETCATALOG_COMPILER_APPICON_NAME = LazyClock; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_ASSET_PATHS = "\"Lazy Clock watchOS WatchKit Extension/Preview Content\""; + CURRENT_PROJECT_VERSION = "$(LC_Build)"; + DEVELOPMENT_ASSET_PATHS = "\"LazyClockWatch Watch App/Preview Content\""; DEVELOPMENT_TEAM = 69RV8YV62P; ENABLE_PREVIEWS = YES; - INFOPLIST_FILE = "Lazy Clock watchOS WatchKit Extension/Info.plist"; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; + INFOPLIST_KEY_WKCompanionAppBundleIdentifier = ""; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", - "@executable_path/../../Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = "com.hbiede.Lazy-Clock-watchOS.watchkitapp.watchkitextension"; - PRODUCT_NAME = "${TARGET_NAME}"; - SDKROOT = watchos; - SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 4; - WATCHOS_DEPLOYMENT_TARGET = 6.0; - }; - name = Release; - }; - 3D252FE323407CE500CDC4D6 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - ASSETCATALOG_COMPILER_APPICON_NAME = LazyClock; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = $LC_Build; - DEVELOPMENT_TEAM = 69RV8YV62P; - IBSC_MODULE = Lazy_Clock_watchOS_WatchKit_Extension; - INFOPLIST_FILE = "Lazy Clock watchOS WatchKit App/Info.plist"; - MARKETING_VERSION = $LC_Version; - PRODUCT_BUNDLE_IDENTIFIER = "com.hbiede.Lazy-Clock-watchOS.watchkitapp"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = watchos; - SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 4; - WATCHOS_DEPLOYMENT_TARGET = 6.0; - }; - name = Debug; - }; - 3D252FE423407CE500CDC4D6 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - ASSETCATALOG_COMPILER_APPICON_NAME = LazyClock; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = $LC_Build; - DEVELOPMENT_TEAM = 69RV8YV62P; - IBSC_MODULE = Lazy_Clock_watchOS_WatchKit_Extension; - INFOPLIST_FILE = "Lazy Clock watchOS WatchKit App/Info.plist"; - MARKETING_VERSION = $LC_Version; - PRODUCT_BUNDLE_IDENTIFIER = "com.hbiede.Lazy-Clock-watchOS.watchkitapp"; - PRODUCT_NAME = "$(TARGET_NAME)"; + MARKETING_VERSION = "$(LC_Version)"; + PRODUCT_BUNDLE_IDENTIFIER = .watchkitapp; + PRODUCT_NAME = "Lazy Clock"; SDKROOT = watchos; SKIP_INSTALL = YES; + SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 4; - WATCHOS_DEPLOYMENT_TARGET = 6.0; - }; - name = Release; - }; - 3D252FE723407CE500CDC4D6 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = $LC_Build; - DEVELOPMENT_TEAM = 69RV8YV62P; - MARKETING_VERSION = $LC_Version; - PRODUCT_BUNDLE_IDENTIFIER = "com.hbiede.Lazy-Clock-watchOS"; - PRODUCT_NAME = "Lazy Clock"; - SWIFT_VERSION = 5.0; - }; - name = Debug; - }; - 3D252FE823407CE500CDC4D6 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = $LC_Build; - DEVELOPMENT_TEAM = 69RV8YV62P; - MARKETING_VERSION = $LC_Version; - PRODUCT_BUNDLE_IDENTIFIER = "com.hbiede.Lazy-Clock-watchOS"; - PRODUCT_NAME = "Lazy Clock"; - SWIFT_VERSION = 5.0; - }; - name = Release; - }; - C332BA3C2134F1A000276726 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = 69RV8YV62P; - INFOPLIST_FILE = TodayView/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@executable_path/../../Frameworks", - ); - MARKETING_VERSION = $LC_Version; - PRODUCT_BUNDLE_IDENTIFIER = "com.hbiede.Lazy-Clock.iOS.TodayView"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - C332BA3D2134F1A000276726 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = 69RV8YV62P; - INFOPLIST_FILE = TodayView/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@executable_path/../../Frameworks", - ); - MARKETING_VERSION = $LC_Version; - PRODUCT_BUNDLE_IDENTIFIER = "com.hbiede.Lazy-Clock.iOS.TodayView"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; + WATCHOS_DEPLOYMENT_TARGET = 9.0; }; name = Release; }; - C332BA9D2134F83900276726 /* Debug */ = { + 3EC300DE2917211600500420 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CODE_SIGN_ENTITLEMENTS = LazyClockWidgetExtension.entitlements; CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = "$(LC_Build)"; DEVELOPMENT_TEAM = 69RV8YV62P; - INFOPLIST_FILE = LazyIntent/Info.plist; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = LazyClockWidget/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = "Lazy Clock"; + INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2022 Hundter Biede. All rights reserved."; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = "com.hbiede.Lazy-Clock.iOS.LazyIntent"; + MARKETING_VERSION = "$(LC_Version)"; + PRODUCT_BUNDLE_IDENTIFIER = "com.hbiede.Lazy-Clock.iOS.LazyClockWidget"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTS_MACCATALYST = YES; + SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; - C332BA9E2134F83900276726 /* Release */ = { + 3EC300DF2917211600500420 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CODE_SIGN_ENTITLEMENTS = LazyClockWidgetExtension.entitlements; CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = "$(LC_Build)"; DEVELOPMENT_TEAM = 69RV8YV62P; - INFOPLIST_FILE = LazyIntent/Info.plist; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = LazyClockWidget/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = "Lazy Clock"; + INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2022 Hundter Biede. All rights reserved."; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = "com.hbiede.Lazy-Clock.iOS.LazyIntent"; + MARKETING_VERSION = "$(LC_Version)"; + PRODUCT_BUNDLE_IDENTIFIER = "com.hbiede.Lazy-Clock.iOS.LazyClockWidget"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTS_MACCATALYST = YES; + SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; @@ -957,6 +695,7 @@ 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; @@ -982,8 +721,8 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.2; - LC_Build = 26; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; + LC_Build = 28; LC_Version = 1.4; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; @@ -991,6 +730,8 @@ SDKROOT = iphoneos; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + TVOS_DEPLOYMENT_TARGET = 16.0; + WATCHOS_DEPLOYMENT_TARGET = 9.0; }; name = Debug; }; @@ -1021,6 +762,7 @@ 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; @@ -1040,15 +782,17 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.2; - LC_Build = 26; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; + LC_Build = 28; LC_Version = 1.4; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; SDKROOT = iphoneos; SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OPTIMIZATION_LEVEL = "-O"; + TVOS_DEPLOYMENT_TARGET = 16.0; VALIDATE_PRODUCT = YES; + WATCHOS_DEPLOYMENT_TARGET = 9.0; }; name = Release; }; @@ -1057,23 +801,28 @@ buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = LazyClock; + ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES; CLANG_USE_OPTIMIZATION_PROFILE = YES; CODE_SIGN_ENTITLEMENTS = "Lazy Clock/Lazy Clock.entitlements"; CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = "$(LC_Build)"; DEVELOPMENT_TEAM = 69RV8YV62P; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)", ); INFOPLIST_FILE = "$(SRCROOT)/Lazy Clock/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.2; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = $LC_Version; + MARKETING_VERSION = "$(LC_Version)"; PRODUCT_BUNDLE_IDENTIFIER = "com.hbiede.Lazy-Clock.iOS"; PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; @@ -1084,23 +833,28 @@ buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = LazyClock; + ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES; CLANG_USE_OPTIMIZATION_PROFILE = YES; CODE_SIGN_ENTITLEMENTS = "Lazy Clock/Lazy Clock.entitlements"; CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = "$(LC_Build)"; DEVELOPMENT_TEAM = 69RV8YV62P; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)", ); INFOPLIST_FILE = "$(SRCROOT)/Lazy Clock/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.2; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = $LC_Version; + MARKETING_VERSION = "$(LC_Version)"; PRODUCT_BUNDLE_IDENTIFIER = "com.hbiede.Lazy-Clock.iOS"; PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; @@ -1113,7 +867,7 @@ CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = 69RV8YV62P; INFOPLIST_FILE = "Lazy ClockTests/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.1; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -1134,7 +888,7 @@ CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = 69RV8YV62P; INFOPLIST_FILE = "Lazy ClockTests/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.1; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -1151,47 +905,20 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 3D252FDE23407CE500CDC4D6 /* Build configuration list for PBXNativeTarget "Lazy Clock watchOS WatchKit Extension" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 3D252FDF23407CE500CDC4D6 /* Debug */, - 3D252FE023407CE500CDC4D6 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 3D252FE223407CE500CDC4D6 /* Build configuration list for PBXNativeTarget "Lazy Clock watchOS WatchKit App" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 3D252FE323407CE500CDC4D6 /* Debug */, - 3D252FE423407CE500CDC4D6 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 3D252FE623407CE500CDC4D6 /* Build configuration list for PBXNativeTarget "Lazy Clock watchOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 3D252FE723407CE500CDC4D6 /* Debug */, - 3D252FE823407CE500CDC4D6 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - C332BA3B2134F1A000276726 /* Build configuration list for PBXNativeTarget "TodayView" */ = { + 3E88C5BD2917302F00EF491C /* Build configuration list for PBXNativeTarget "LazyClockWatch" */ = { isa = XCConfigurationList; buildConfigurations = ( - C332BA3C2134F1A000276726 /* Debug */, - C332BA3D2134F1A000276726 /* Release */, + 3E88C5BE2917302F00EF491C /* Debug */, + 3E88C5BF2917302F00EF491C /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - C332BA9C2134F83900276726 /* Build configuration list for PBXNativeTarget "LazyIntent" */ = { + 3EC300DD2917211600500420 /* Build configuration list for PBXNativeTarget "LazyClockWidgetExtension" */ = { isa = XCConfigurationList; buildConfigurations = ( - C332BA9D2134F83900276726 /* Debug */, - C332BA9E2134F83900276726 /* Release */, + 3EC300DE2917211600500420 /* Debug */, + 3EC300DF2917211600500420 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Lazy Clock.xcodeproj/xcshareddata/xcschemes/Lazy Clock-watchOS WatchKit App.xcscheme b/Lazy Clock.xcodeproj/xcshareddata/xcschemes/Lazy Clock-watchOS WatchKit App.xcscheme index ed18cc6..64fabc7 100644 --- a/Lazy Clock.xcodeproj/xcshareddata/xcschemes/Lazy Clock-watchOS WatchKit App.xcscheme +++ b/Lazy Clock.xcodeproj/xcshareddata/xcschemes/Lazy Clock-watchOS WatchKit App.xcscheme @@ -1,6 +1,6 @@ + + + + @@ -39,17 +48,6 @@ - - - - - - - - + + + + @@ -64,23 +73,13 @@ - - - - - - - - diff --git a/Lazy Clock.xcodeproj/xcshareddata/xcschemes/Stickers.xcscheme b/Lazy Clock.xcodeproj/xcshareddata/xcschemes/Stickers.xcscheme index 6393e13..08d05e9 100644 --- a/Lazy Clock.xcodeproj/xcshareddata/xcschemes/Stickers.xcscheme +++ b/Lazy Clock.xcodeproj/xcshareddata/xcschemes/Stickers.xcscheme @@ -1,6 +1,6 @@ + + + + @@ -64,23 +73,13 @@ - - - - - - - - diff --git a/Lazy Clock.xcodeproj/xcshareddata/xcschemes/TodayView.xcscheme b/Lazy Clock.xcodeproj/xcshareddata/xcschemes/TodayView.xcscheme index ebc533a..ca967a8 100644 --- a/Lazy Clock.xcodeproj/xcshareddata/xcschemes/TodayView.xcscheme +++ b/Lazy Clock.xcodeproj/xcshareddata/xcschemes/TodayView.xcscheme @@ -1,6 +1,6 @@ + + + + @@ -64,23 +73,13 @@ - - - - - - - - diff --git a/Lazy Clock.xcodeproj/xcshareddata/xcschemes/watchOS (Notification).xcscheme b/Lazy Clock.xcodeproj/xcshareddata/xcschemes/watchOS (Notification).xcscheme index a341d5d..5436be6 100644 --- a/Lazy Clock.xcodeproj/xcshareddata/xcschemes/watchOS (Notification).xcscheme +++ b/Lazy Clock.xcodeproj/xcshareddata/xcschemes/watchOS (Notification).xcscheme @@ -1,6 +1,6 @@ + + + + @@ -63,17 +72,6 @@ - - - - - - + launchAutomaticallySubstyle = "8"> - - - - - - + launchAutomaticallySubstyle = "8"> + + + + @@ -63,17 +72,6 @@ - - - - - - - - - - - - INEnums INIntentDefinitionModelVersion - 1.0 + 1.2 + INIntentDefinitionNamespace + YKvVPV INIntentDefinitionSystemVersion - 18A384a + 21G83 INIntentDefinitionToolsBuildVersion - 10A254a + 14B47b INIntentDefinitionToolsVersion - 10.0 + 14.1 INIntents @@ -32,7 +34,7 @@ INIntentParameterCombinationIsPrimary INIntentParameterCombinationSubtitle - Natural Language Time conversion for the current time. Copies the result to the clipboard. + Natural Language Time conversion for the current time INIntentParameterCombinationSubtitleID AIKV6M INIntentParameterCombinationSupportsBackgroundExecution @@ -43,22 +45,10 @@ mqU4zW - INIntentParameters - INIntentResponse INIntentResponseCodes - - INIntentResponseCodeFormatString - Error. Time Doesn't Exist. - INIntentResponseCodeFormatStringID - jYKF8r - INIntentResponseCodeName - failure - INIntentResponseCodeSuccess - - INIntentResponseCodeFormatString ${timeResponse} @@ -69,96 +59,17 @@ INIntentResponseCodeSuccess - - INIntentResponseLastParameterTag - 1 - INIntentResponseParameters - - - INIntentResponseParameterDisplayPriority - 1 - INIntentResponseParameterName - timeResponse - INIntentResponseParameterSupportsMultipleValues - - INIntentResponseParameterTag - 1 - INIntentResponseParameterType - String - - - - INIntentRestrictions - 0 - INIntentTitle - Lazy Clock - INIntentTitleID - AtYkCo - INIntentType - Custom - INIntentUserConfirmationRequired - - INIntentVerb - View - - - INIntentCategory - information - INIntentDescription - Natural Language Time conversion for a specified time from the clipboard. Copies the result to the clipboard. Time must be in format "HH:mm" in 24 hour time. - INIntentDescriptionID - 9YEXGa - INIntentLastParameterTag - 0 - INIntentName - LazyClockSpecified - INIntentParameterCombinations - - - - INIntentParameterCombinationIsPrimary - - INIntentParameterCombinationSubtitle - Natural Language Time conversion for a specified time from the clipboard. Copies the result to the clipboard. Time must be in format "HH:mm" in 24 hour time. - INIntentParameterCombinationSubtitleID - JQRER7 - INIntentParameterCombinationSupportsBackgroundExecution - - INIntentParameterCombinationTitle - Specific Time - INIntentParameterCombinationTitleID - A66vu3 - - - INIntentParameters - - INIntentResponse - - INIntentResponseCodes - INIntentResponseCodeFormatString - Error. ${timeInput} is not a valid time code. Input must be of the form hh:mm in 24 hour format. + Error. Time Doesn't Exist. INIntentResponseCodeFormatStringID - 3FvdNq + jYKF8r INIntentResponseCodeName failure - INIntentResponseCodeSuccess - - - - INIntentResponseCodeFormatString - ${timeResponse} - INIntentResponseCodeFormatStringID - BaXwL4 - INIntentResponseCodeName - success - INIntentResponseCodeSuccess - INIntentResponseLastParameterTag - 2 + 1 INIntentResponseParameters @@ -166,40 +77,24 @@ 1 INIntentResponseParameterName timeResponse - INIntentResponseParameterSupportsMultipleValues - INIntentResponseParameterTag 1 INIntentResponseParameterType String - - INIntentResponseParameterDisplayPriority - 2 - INIntentResponseParameterName - timeInput - INIntentResponseParameterSupportsMultipleValues - - INIntentResponseParameterTag - 2 - INIntentResponseParameterType - String - - INIntentRestrictions - 0 INIntentTitle - Lazy Clock from Clipboard + Lazy Clock INIntentTitleID - RPMw7i + AtYkCo INIntentType Custom - INIntentUserConfirmationRequired - INIntentVerb View + INTypes + diff --git a/Lazy Clock/Base.lproj/Main.storyboard b/Lazy Clock/Base.lproj/Main.storyboard index a5754bf..84ddc08 100644 --- a/Lazy Clock/Base.lproj/Main.storyboard +++ b/Lazy Clock/Base.lproj/Main.storyboard @@ -1,12 +1,11 @@ - - - - + + + - - + + @@ -27,8 +26,8 @@ + + + + + + + + + + + diff --git a/Lazy Clock/Colors.swift b/Lazy Clock/Colors.swift new file mode 100644 index 0000000..09d36f4 --- /dev/null +++ b/Lazy Clock/Colors.swift @@ -0,0 +1,26 @@ +// +// Colors.swift +// Lazy Clock +// +// Created by Hundter Biede on 11/5/22. +// Copyright © 2022 Hundter Biede. All rights reserved. +// + +import Foundation +import UIKit + +/// Array of the UIColors to be used in the rotation of the clock display. +let colorRotation = [ + UIColor.black, + UIColor.white, + UIColor(red: 0.639, green: 0.157, blue: 0.133, alpha: 1.0), // red + UIColor(red: 0.24, green: 0.588, blue: 0.318, alpha: 1.0), // green + UIColor(red: 0.133, green: 0.322, blue: 0.619, alpha: 1.0) // blue +] + +/// Array of the UIColors to be used in the rotation of the timer BG color. +let timerBGColorRotation = [ + UIColor(red: 0.639, green: 0.157, blue: 0.133, alpha: 1.0), // red + UIColor(red: 0.24, green: 0.588, blue: 0.318, alpha: 1.0), // green + UIColor(red: 0.133, green: 0.322, blue: 0.619, alpha: 1.0) // blue +] diff --git a/Lazy Clock/Info.plist b/Lazy Clock/Info.plist index 1a1db7f..aab42bc 100644 --- a/Lazy Clock/Info.plist +++ b/Lazy Clock/Info.plist @@ -18,6 +18,10 @@ $(LC_Version) CFBundleVersion $(LC_Build) + INIntentsSupported + + LazyClockIntent + LSRequiresIPhoneOS NSUserActivityTypes @@ -25,8 +29,6 @@ LazyClockIntent LazyClockSpecifiedIntent - UILaunchStoryboardName - LaunchScreen UIMainStoryboardFile Main UIRequiredDeviceCapabilities @@ -37,17 +39,23 @@ UISupportedInterfaceOrientations - UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight - UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationPortrait + UILaunchScreen + + UIColorName + LaunchScreenColor + UIImageName + Launch + UISupportedInterfaceOrientations~ipad - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown diff --git a/Lazy Clock/LaunchScreen.storyboard b/Lazy Clock/LaunchScreen.storyboard deleted file mode 100644 index 073c4c6..0000000 --- a/Lazy Clock/LaunchScreen.storyboard +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Lazy Clock/Lazy Clock.entitlements b/Lazy Clock/Lazy Clock.entitlements index 21d95c4..7fc8dd3 100644 --- a/Lazy Clock/Lazy Clock.entitlements +++ b/Lazy Clock/Lazy Clock.entitlements @@ -4,5 +4,9 @@ com.apple.developer.siri + com.apple.security.app-sandbox + + com.apple.security.network.client + diff --git a/Lazy Clock/NatLangViewController.swift b/Lazy Clock/NatLangViewController.swift index 837f58f..f55d6f0 100644 --- a/Lazy Clock/NatLangViewController.swift +++ b/Lazy Clock/NatLangViewController.swift @@ -8,10 +8,8 @@ import Foundation import UIKit -#if os(iOS) import Intents import os.log -#endif class NatLangViewController: UIViewController { /// IBOutlets @@ -19,35 +17,22 @@ class NatLangViewController: UIViewController { @IBOutlet var timeLbl: UILabel! @IBOutlet var timerBGHeightCon: NSLayoutConstraint! @IBOutlet var timerColorBGView: UIView! - - #if os(iOS) - /// Array of the UIColors to be used in the rotation of the clock display. - let colorRotation = [ UIColor.black, - UIColor.white, - UIColor(red: 0.639, green: 0.157, blue: 0.133, alpha: 1.0), // red - UIColor(red: 0.24, green: 0.588, blue: 0.318, alpha: 1.0), // green - UIColor(red: 0.133, green: 0.322, blue: 0.619, alpha: 1.0)] // blue - - /// Array of the UIColors to be used in the rotation of the timer BG color. - let timerBGColorRotation = [ UIColor(red: 0.639, green: 0.157, blue: 0.133, alpha: 1.0), // red - UIColor(red: 0.24, green: 0.588, blue: 0.318, alpha: 1.0), // green - UIColor(red: 0.133, green: 0.322, blue: 0.619, alpha: 1.0)] // blue /// Index to use to cycle through colorRotation[] for the updating of the clock textColor. Defaults to 0. static var colorRotationIndex = 0 - + /// Index to use to cycle through timerBGColorRotation[] for the updating of the timer BG color. Defaults to 0. static var timerBGColorRotationIndex = 0 - /// Bool that determines if the clock will be displayed as natural language (False = Natural Time (Default), True = Short Time) + /// Bool that determines if the clock will be displayed as natural language + /// (False = Natural Time (Default), True = Short Time) static var isShortLangDisplay = false /// ImpactFeedbackGenerator to be used to create haptic feedback. let impactor = UIImpactFeedbackGenerator.init() - #endif /// Natural Laguage Formatter - var natTime = NaturalLanguageTime.NatTime() + var natTime = NaturalLanguageTime() /// DateFormatter to be used to update the time, either to the form of short or long form time. let formatter: DateFormatter = { @@ -55,12 +40,10 @@ class NatLangViewController: UIViewController { temp.dateFormat = "HH:mm:ss" return temp }() - override func viewDidLoad() { super.viewDidLoad() - #if os(iOS) // create gesture recognizers for the timer bg let doubleTapGesture = UITapGestureRecognizer(target: self, action: #selector(onTap(sender:))) doubleTapGesture.numberOfTouchesRequired = 2 @@ -68,25 +51,25 @@ class NatLangViewController: UIViewController { timeLbl.addGestureRecognizer(mainTapGesture) timeLbl.addGestureRecognizer(doubleTapGesture) mainTapGesture.require(toFail: doubleTapGesture) - + // Loads saved data for the clock - NatLangViewController.colorRotationIndex = UserDefaults.standard.integer(forKey: "LazyClock-ColorIndex") - if NatLangViewController.colorRotationIndex >= colorRotation.count || NatLangViewController.colorRotationIndex < 0 { + NatLangViewController.colorRotationIndex = + UserDefaults.standard.integer(forKey: "LazyClock-ColorIndex") + if NatLangViewController.colorRotationIndex >= colorRotation.count || + NatLangViewController.colorRotationIndex < 0 { NatLangViewController.colorRotationIndex = 0 } - NatLangViewController.timerBGColorRotationIndex = UserDefaults.standard.integer(forKey: "LazyClock-TimerBGColorIndex") - if NatLangViewController.timerBGColorRotationIndex >= timerBGColorRotation.count || NatLangViewController.timerBGColorRotationIndex < 0 { + NatLangViewController.timerBGColorRotationIndex = + UserDefaults.standard.integer(forKey: "LazyClock-TimerBGColorIndex") + if NatLangViewController.timerBGColorRotationIndex >= timerBGColorRotation.count || + NatLangViewController.timerBGColorRotationIndex < 0 { NatLangViewController.timerBGColorRotationIndex = 0 } updateColorViewBG() updateColorForTimerBG() - - NatLangViewController.isShortLangDisplay = UserDefaults.standard.bool(forKey: "LazyClock-LazyTimeInactive") - if (UserDefaults.standard.bool(forKey: "LazyClock-HasDonatedInteraction")) { - donateInteraction() - } - #endif + NatLangViewController.isShortLangDisplay = + UserDefaults.standard.bool(forKey: "LazyClock-LazyTimeInactive") // Sets defaults for the timeLbl timeLbl.adjustsFontSizeToFitWidth = true @@ -94,44 +77,53 @@ class NatLangViewController: UIViewController { // Starts the clock on updating every second updateTime() - Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(self.updateTime), userInfo: nil, repeats: true) + Timer.scheduledTimer( + timeInterval: 1, + target: self, + selector: #selector(self.updateTime), + userInfo: nil, + repeats: true + ) os_log("Lazy Clock Launched Successfully") } - - /// Prevent using colors on the blue progress bar or showing the bar when not intended after changing the setting of isShortLangDisplay + + /// Prevent using colors on the blue progress bar or showing the bar when not intended after changing the + /// setting of isShortLangDisplay override func viewWillAppear(_ animated: Bool) { if NatLangViewController.isShortLangDisplay { - if (NatLangViewController.colorRotationIndex >= 2) { + if NatLangViewController.colorRotationIndex >= 2 { NatLangViewController.colorRotationIndex = 0 } updateColorViewBG() } else { self.timerBGHeightCon.constant = 0 } - } - + /// normal setup of a new app view controller override func becomeFirstResponder() -> Bool { return true } - + /// use the accessibilityScroll action to perform the equivalent of tapping the primary background override func accessibilityScroll(_ direction: UIAccessibilityScrollDirection) -> Bool { // increment in the direction of the scroll switch direction { - case .down, .left, .previous: - NatLangViewController.colorRotationIndex -= 1 - default: - NatLangViewController.colorRotationIndex += 1 + case .down, .left, .previous: + NatLangViewController.colorRotationIndex -= 1 + default: + NatLangViewController.colorRotationIndex += 1 } - + // Prevent rollover or using colors on the blue progress bar - if (NatLangViewController.colorRotationIndex == colorRotation.count || (NatLangViewController.colorRotationIndex == 2 && NatLangViewController.isShortLangDisplay)) { + if NatLangViewController.colorRotationIndex == colorRotation.count || + (NatLangViewController.colorRotationIndex == 2 && + NatLangViewController.isShortLangDisplay) { NatLangViewController.colorRotationIndex = 0 - } else if (NatLangViewController.colorRotationIndex == -1) { - NatLangViewController.colorRotationIndex = (NatLangViewController.isShortLangDisplay ? 1 : colorRotation.count - 1) + } else if NatLangViewController.colorRotationIndex == -1 { + NatLangViewController.colorRotationIndex = + NatLangViewController.isShortLangDisplay ? 1 : colorRotation.count - 1 } updateColorViewBG() return true @@ -140,65 +132,59 @@ class NatLangViewController: UIViewController { /// Updates time displayed on display. Called from Timer in viewDidLoad(). @objc func updateTime() { - #if os(iOS) timeLbl.numberOfLines = (NatLangViewController.isShortLangDisplay ? 1 : 2) - if (NatLangViewController.isShortLangDisplay) { - timeLbl.text = DateFormatter.localizedString(from: Date(), dateStyle: .none, timeStyle: .short) - - let tempArray = formatter.string(from: Date()).trimmingCharacters(in: .whitespacesAndNewlines).split(separator: ":") + if NatLangViewController.isShortLangDisplay { + timeLbl.text = DateFormatter.localizedString( + from: Date(), + dateStyle: .none, + timeStyle: .short + ) + + let tempArray = formatter.string(from: Date()) + .trimmingCharacters(in: .whitespacesAndNewlines) + .split(separator: ":") UIView.animate(withDuration: 1, animations: { - // the below CGFloat represents the current seconds, thus the overall math equaltion results in a the height of timerBG being set to a proportion of the full height of the screen - self.timerBGHeightCon.constant = CGFloat((Int(tempArray[2]) ?? 0) + 1) / 60.0 * self.backgroundView.frame.height + // the below CGFloat represents the current seconds, thus the overall + // math equaltion results in a the height of timerBG being set to a + // proportion of the full height of the screen + self.timerBGHeightCon.constant = CGFloat((Int(tempArray[2]) ?? 0) + 1) / + 60.0 * self.backgroundView.frame.height self.view.layoutIfNeeded() }) } else { natTime.timeString = formatter.string(from: Date()) - timeLbl.text = natTime.getNatLangString() + timeLbl.text = natTime.description } - #elseif os(tvOS) - natTime.timeString = formatter.string(from: Date()) - timeLbl.text = natTime.getNatLangString() - #endif } - #if os(iOS) - private func donateInteraction() { - let intent = LazyClockSpecifiedIntent() - intent.suggestedInvocationPhrase = "Naturalize Clipboard" - let interaction = INInteraction(intent: intent, response: nil) - - interaction.donate { (error) in - if error != nil { - if let error = error as NSError? { - os_log("Clipboard interaction donation failed: %@", log: .default, type: .error, error) - } - } else { - os_log("Successfully donated clipboard interaction") - } - } - UserDefaults.standard.set(true, forKey: "LazyClock-HasDonatedInteraction") - } - /// Rotates the color of the time as well as the sliding background of the short time display @objc func onTap(sender: UITapGestureRecognizer) { var hasUpdatedBG = false var hasUpdatedMainView = false - for x in 0.. 12 && + DateFormatter.dateFormat( + fromTemplate: "j", + options: 0, + locale: Locale.current + )!.contains("a") { + hours = hours! - 12 } - set { - let tempArray = newValue.split(separator: ":") - hours = Int(tempArray[0]) ?? nil - // Change 24 to 12 hour time - if (DateFormatter.dateFormat(fromTemplate: "j", options: 0, locale: Locale.current)!.contains("a") && hours! > 12) { - hours = hours! - 12 - } - if tempArray.count > 1 { - minutes = Int(tempArray[1]) ?? nil - } else { - minutes = nil - } - if hours != nil && minutes != nil { - natLangString = toNatLang() - } else { - natLangString = "Default Time" - } + if tempArray.count > 1 { + minutes = Int(tempArray[1]) ?? nil + } else { + minutes = nil + } + if hours != nil && minutes != nil { + _description = toNatLang() + } else { + _description = "Default Time" } } + } + + public init() { + self.init(Date()) + } + + public init(_ date: Date) { + let formatter: DateFormatter = { + let temp = DateFormatter() + temp.dateFormat = "HH:mm:ss" + return temp + }() + timeString = formatter.string(from: date) + } + + public init(_ time: String) { + timeString = time + } - public init(){} - - public func getNatLangString() -> String! { - return natLangString + func roundByFive(_ inputNumber: Int!) -> Int { + return Int(ceil(Double(inputNumber) / 5)) * 5 + } + + public func toNatLang() -> String { + guard var minuteValue = minutes else { + return "Default Time" } + let oneOClock = hours! == 1 || + (hours! == 13 && + !DateFormatter.dateFormat( + fromTemplate: "j", + options: 0, + locale: Locale.current + )!.contains("a")) + let nextHourAsString = hours! == 23 + ? NSLocalizedString("0", comment: "midnight") + : NSLocalizedString( + String(describing: hours! + 1), + comment: "The next hour, spelled out" + ) + minuteValue = roundByFive(minuteValue) + var hourAsString = minuteValue >= 45 + ? nextHourAsString + : NSLocalizedString( + String(describing: hours!), + comment: "The current hour, spelled out" + ) - func roundByFive(_ inputNumber: Int!) -> Int { - return Int(ceil(Double(inputNumber) / 5)) * 5 + if NSLocale.current.identifier == "en_GB" && minuteValue == 30 { + hourAsString = NSLocalizedString( + String(describing: hours! + 1), + comment: "The current hour, spelled out, but incremented for british time telling" + ) } - public func toNatLang() -> String { - guard var minuteValue = minutes else { - return "Default Time" - } - var hourAsString = NSLocalizedString(String(describing: hours!), comment: - "The current hour, spelled out") - let oneOClock = hours! == 1 || (hours! == 13 && !DateFormatter.dateFormat(fromTemplate: "j", options: 0, locale: Locale.current)!.contains("a")) - let midnightAsString = NSLocalizedString("0", comment: "midnight") - let nextHourAsString = NSLocalizedString(String(describing: hours! + 1), comment: "The next hour, spelled out") - minuteValue = roundByFive(minuteValue) - var returnStatementFormat:String - - switch minuteValue { - case 0, 60: - if (minuteValue == 60) { - hourAsString = (hours! == 23 ? midnightAsString : nextHourAsString) - } - if (hours! == 23 || hours! == 11 || hours! == 0 || hours! == 12) - { - return hourAsString - } else { - returnStatementFormat = NSLocalizedString(oneOClock ? "%@ o'clock-one" : "%@ o'clock", comment: "Time on the hour") - } - case 5: - returnStatementFormat = NSLocalizedString(oneOClock ? "Five past %@-one" : "Five past %@", comment: "Five past the hour") - case 15: - returnStatementFormat = NSLocalizedString(oneOClock ? "Quarter past %@-one" : "Quarter past %@", comment: "Quarter past the hour") - case 30: - returnStatementFormat = NSLocalizedString(oneOClock ? "Half past %@-one" : "Half past %@", comment: "Half past the hour") - if (NSLocale.current.identifier == "en_GB") { - hourAsString = NSLocalizedString(String(describing: hours! + 1), comment: "The current hour, spelled out, but incremented for british time telling") - } - case 45: - hourAsString = (hours! == 23 ? midnightAsString : nextHourAsString) - returnStatementFormat = NSLocalizedString(oneOClock ? "Quarter til %@-one" : "Quarter til %@", comment: "Quarter til the hour") - case 50: - hourAsString = (hours! == 23 ? midnightAsString : nextHourAsString) - returnStatementFormat = NSLocalizedString(oneOClock ? "Ten til %@-one" : "Ten til %@", comment: "Ten til the hour") - case 55: - hourAsString = (hours! == 23 ? midnightAsString : nextHourAsString) - returnStatementFormat = NSLocalizedString(oneOClock ? "Five til %@-one" : "Five til %@", comment: "Five til the hour") - default: - returnStatementFormat = NSLocalizedString(oneOClock ? "%@ %@-one" : "%@ %@", comment: "Default") - let minuteAsString = NSLocalizedString(String(describing: minuteValue), comment: "Minute Value") - return String.localizedStringWithFormat(returnStatementFormat, hourAsString, minuteAsString) - } - - return String.localizedStringWithFormat(returnStatementFormat, hourAsString) + if (minutes == 0 || minutes == 60) && + (hours! == 23 || hours! == 11 || hours! == 0 || hours! == 12) { + return hourAsString + } + + if let format = getFormatString(minuteValue, oneOClock) { + // Specialty return + return String.localizedStringWithFormat(format, hourAsString) + } + + // Default + let returnStatementFormat = NSLocalizedString( + oneOClock ? "%@ %@-one" : "%@ %@", + comment: "Default" + ) + let minuteAsString = NSLocalizedString( + String(describing: minuteValue), + comment: "Minute Value" + ) + return String.localizedStringWithFormat( + returnStatementFormat, + hourAsString, + minuteAsString + ) + } + + func getFormatString(_ minuteValue: Int, _ oneOClock: Bool = false) -> String? { + switch minuteValue { + case 0, 60: + return NSLocalizedString( + oneOClock ? "%@ o'clock-one" : "%@ o'clock", + comment: "Time on the hour" + ) + case 5: + return NSLocalizedString( + oneOClock ? "Five past %@-one" : "Five past %@", + comment: "Five past the hour" + ) + case 15: + return NSLocalizedString( + oneOClock ? "Quarter past %@-one" : "Quarter past %@", + comment: "Quarter past the hour" + ) + case 30: + return NSLocalizedString( + oneOClock ? "Half past %@-one" : "Half past %@", + comment: "Half past the hour" + ) + case 45: + return NSLocalizedString( + oneOClock + ? "Quarter til %@-one" + : "Quarter til %@", + comment: "Quarter til the hour" + ) + case 50: + return NSLocalizedString( + oneOClock ? "Ten til %@-one" : "Ten til %@", + comment: "Ten til the hour" + ) + case 55: + return NSLocalizedString( + oneOClock ? "Five til %@-one" : "Five til %@", + comment: "Five til the hour" + ) + default: + return nil } } } diff --git a/Lazy Clock/SettingsViewController.swift b/Lazy Clock/SettingsViewController.swift index 05956dd..bf8483f 100644 --- a/Lazy Clock/SettingsViewController.swift +++ b/Lazy Clock/SettingsViewController.swift @@ -11,18 +11,20 @@ import UIKit import IntentsUI class SettingsViewController: UIViewController { - @IBOutlet var settingsSwitch: UISwitch! - @IBOutlet var settingsViewBG: UIView! - @IBOutlet var siriButtonContainer: UIView! - @IBOutlet var switchContainer: UIView! - @IBOutlet var siriButtonYConstraint: NSLayoutConstraint! - + @IBOutlet weak var settingsSwitch: UISwitch! + @IBOutlet weak var settingsSwitchLabel: UILabel! + @IBOutlet weak var settingsViewBG: UIView! + @IBOutlet weak var switchContainer: UIView! + @IBOutlet weak var mainText: UILabel! override func viewDidLoad() { super.viewDidLoad() settingsSwitch.isOn = !UserDefaults.standard.bool(forKey: "LazyClock-LazyTimeInactive") + settingsSwitch.tintColor = timerBGColorRotation[NatLangViewController.timerBGColorRotationIndex] + settingsSwitchLabel.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(onLabelTap))) + mainText.sizeToFit() } - + override func accessibilityPerformEscape() -> Bool { self.dismiss(animated: true, completion: nil) return true @@ -32,6 +34,10 @@ class SettingsViewController: UIViewController { UserDefaults.standard.set(!settingsSwitch.isOn, forKey: "LazyClock-LazyTimeInactive") NatLangViewController.isShortLangDisplay = !settingsSwitch.isOn } + @IBAction func onLabelTap(_ sender: UITapGestureRecognizer) { + UserDefaults.standard.set(!settingsSwitch.isOn, forKey: "LazyClock-LazyTimeInactive") + NatLangViewController.isShortLangDisplay = !settingsSwitch.isOn + } @IBAction func onSwipeDown(_ sender: UISwipeGestureRecognizer) { self.dismiss(animated: true, completion: nil) } diff --git a/Lazy ClockTests/Lazy_ClockTests.swift b/Lazy ClockTests/LazyClockTests.swift similarity index 77% rename from Lazy ClockTests/Lazy_ClockTests.swift rename to Lazy ClockTests/LazyClockTests.swift index f23bd4c..03a39e6 100644 --- a/Lazy ClockTests/Lazy_ClockTests.swift +++ b/Lazy ClockTests/LazyClockTests.swift @@ -8,7 +8,7 @@ import XCTest -class Lazy_ClockTests: XCTestCase { +class LazyClockTests: XCTestCase { func timeConversionTest() { // This is an example of a functional test case. @@ -48,6 +48,18 @@ class Lazy_ClockTests: XCTestCase { natTime.timeString = "00:55" XCTAssert(natTime.getNatLangString() == "Five Til One") + natTime.timeString = "01:30" + XCTAssert(natTime.getNatLangString() == "Five Til One") + + natTime.timeString = "01:55" + XCTAssert(natTime.getNatLangString() == "Half Past One") + + natTime.timeString = "13:55" + XCTAssert(natTime.getNatLangString() == "Five Til One") + + natTime.timeString = "23:55" + XCTAssert(natTime.getNatLangString() == "Five Til Midnight") + } } diff --git a/LazyClock.swift b/LazyClock.swift new file mode 100644 index 0000000..b3d9eb8 --- /dev/null +++ b/LazyClock.swift @@ -0,0 +1,39 @@ +// +// LazyClock.swift +// Lazy Clock +// +// Created by Hundter Biede on 11/5/22. +// Copyright © 2022 Hundter Biede. All rights reserved. +// + +import Foundation +import AppIntents + +@available(iOS 16.0, macOS 13.0, watchOS 9.0, tvOS 16.0, *) +struct LazyClock: AppIntent, CustomIntentMigratedAppIntent { + static let intentClassName = "LazyClockIntent" + + static var title: LocalizedStringResource = "Lazy Clock" + static var description = IntentDescription( + "Natural Language Time conversion for the current time. Copies the result to the clipboard." + ) + + static var parameterSummary: some ParameterSummary { + Summary() + } + + func perform() async throws -> some IntentResult { + let result = NaturalLanguageTime().description + let dialog = IntentDialog(stringLiteral: result) + return .result(value: result, dialog: dialog) + } +} + +fileprivate extension IntentDialog { + static func responseSuccess(timeResponse: String) -> Self { + "\(timeResponse)" + } + static var responseFailure: Self { + "Error. Time Doesn't Exist." + } +} diff --git a/LazyClockWatch Watch App/ContentView.swift b/LazyClockWatch Watch App/ContentView.swift new file mode 100644 index 0000000..5d5ac99 --- /dev/null +++ b/LazyClockWatch Watch App/ContentView.swift @@ -0,0 +1,26 @@ +// +// ContentView.swift +// LazyClockWatch Watch App +// +// Created by Hundter Biede on 11/5/22. +// Copyright © 2022 Hundter Biede. All rights reserved. +// + +import SwiftUI + +struct ContentView: View { + var body: some View { + VStack { + Text(NaturalLanguageTime().description) + .font(.system(size: 500)) + .minimumScaleFactor(0.01) + } + .padding() + } +} + +struct ContentView_Previews: PreviewProvider { + static var previews: some View { + ContentView() + } +} diff --git a/LazyClockWatch Watch App/LazyClockWatchApp.swift b/LazyClockWatch Watch App/LazyClockWatchApp.swift new file mode 100644 index 0000000..63880d3 --- /dev/null +++ b/LazyClockWatch Watch App/LazyClockWatchApp.swift @@ -0,0 +1,18 @@ +// +// LazyClockWatchApp.swift +// LazyClockWatch Watch App +// +// Created by Hundter Biede on 11/5/22. +// Copyright © 2022 Hundter Biede. All rights reserved. +// + +import SwiftUI + +@main +struct LazyClockWatch: App { + var body: some Scene { + WindowGroup { + ContentView() + } + } +} diff --git a/LazyClockWatch Watch App/Preview Content/Preview Assets.xcassets/Contents.json b/LazyClockWatch Watch App/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/LazyClockWatch Watch App/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LazyClockWidget/Assets.xcassets/AccentColor.colorset/Contents.json b/LazyClockWidget/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..e5914ab --- /dev/null +++ b/LazyClockWidget/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,15 @@ +{ + "colors" : [ + { + "color" : { + "platform" : "universal", + "reference" : "systemRedColor" + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LazyClockWidget/Assets.xcassets/Contents.json b/LazyClockWidget/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/LazyClockWidget/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LazyClockWidget/Assets.xcassets/WidgetBackground.colorset/Contents.json b/LazyClockWidget/Assets.xcassets/WidgetBackground.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/LazyClockWidget/Assets.xcassets/WidgetBackground.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LazyClockWidget/Assets.xcassets/WidgetIcon.appiconset/Contents.json b/LazyClockWidget/Assets.xcassets/WidgetIcon.appiconset/Contents.json new file mode 100644 index 0000000..c03b074 --- /dev/null +++ b/LazyClockWidget/Assets.xcassets/WidgetIcon.appiconset/Contents.json @@ -0,0 +1,14 @@ +{ + "images" : [ + { + "filename" : "Icon-AppleWatch-1024x1024.png", + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LazyClockWidget/Assets.xcassets/WidgetIcon.appiconset/Icon-AppleWatch-1024x1024.png b/LazyClockWidget/Assets.xcassets/WidgetIcon.appiconset/Icon-AppleWatch-1024x1024.png new file mode 100644 index 0000000..49a9a04 Binary files /dev/null and b/LazyClockWidget/Assets.xcassets/WidgetIcon.appiconset/Icon-AppleWatch-1024x1024.png differ diff --git a/LazyClockWidget/Assets.xcassets/WidgetImage.imageset/Contents.json b/LazyClockWidget/Assets.xcassets/WidgetImage.imageset/Contents.json new file mode 100644 index 0000000..ca5b858 --- /dev/null +++ b/LazyClockWidget/Assets.xcassets/WidgetImage.imageset/Contents.json @@ -0,0 +1,16 @@ +{ + "images" : [ + { + "filename" : "Icon-AppleWatch-98x98@2x.png", + "idiom" : "iphone" + }, + { + "filename" : "Icon-AppleWatch-98x98@2x 1.png", + "idiom" : "ipad" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LazyClockWidget/Assets.xcassets/WidgetImage.imageset/Icon-AppleWatch-98x98@2x 1.png b/LazyClockWidget/Assets.xcassets/WidgetImage.imageset/Icon-AppleWatch-98x98@2x 1.png new file mode 100644 index 0000000..12abd47 Binary files /dev/null and b/LazyClockWidget/Assets.xcassets/WidgetImage.imageset/Icon-AppleWatch-98x98@2x 1.png differ diff --git a/LazyClockWidget/Assets.xcassets/WidgetImage.imageset/Icon-AppleWatch-98x98@2x.png b/LazyClockWidget/Assets.xcassets/WidgetImage.imageset/Icon-AppleWatch-98x98@2x.png new file mode 100644 index 0000000..12abd47 Binary files /dev/null and b/LazyClockWidget/Assets.xcassets/WidgetImage.imageset/Icon-AppleWatch-98x98@2x.png differ diff --git a/LazyClockWidget/Info.plist b/LazyClockWidget/Info.plist new file mode 100644 index 0000000..0f118fb --- /dev/null +++ b/LazyClockWidget/Info.plist @@ -0,0 +1,11 @@ + + + + + NSExtension + + NSExtensionPointIdentifier + com.apple.widgetkit-extension + + + diff --git a/LazyClockWidget/LazyClockWidget.swift b/LazyClockWidget/LazyClockWidget.swift new file mode 100644 index 0000000..a214e94 --- /dev/null +++ b/LazyClockWidget/LazyClockWidget.swift @@ -0,0 +1,137 @@ +// +// LazyClockWidget.swift +// LazyClockWidget +// +// Created by Hundter Biede on 11/5/22. +// Copyright © 2022 Hundter Biede. All rights reserved. +// + +import WidgetKit +import SwiftUI +import Intents + +struct Provider: IntentTimelineProvider { + + typealias Entry = LazyClockEntry + + typealias Intent = LazyClockIntent + + func recommendations() -> [IntentRecommendation] { + return [IntentRecommendation(intent: Intent(), description: "Current Time")] + } + + func placeholder(in context: Context) -> Entry { + Entry(date: Date(), configuration: Intent()) + } + + func getSnapshot( + for configuration: Intent, + in context: Context, + completion: @escaping (Entry) -> Void + ) { + let entry = Entry(date: Date(), configuration: configuration) + completion(entry) + } + + func getTimeline( + for configuration: Intent, + in context: Context, + completion: @escaping (Timeline) -> Void + ) { + var entries: [Entry] = [] + + // 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: .hour, value: hourOffset, to: currentDate)! + let entry = Entry(date: entryDate, configuration: configuration) + entries.append(entry) + } + + let timeline = Timeline(entries: entries, policy: .atEnd) + completion(timeline) + } +} + +struct LazyClockEntry: TimelineEntry { + let date: Date + let configuration: LazyClockIntent +} + +struct LazyClockWidgetEntryView: View { + var entry: Provider.Entry + + @Environment(\.widgetFamily) var family + + @ViewBuilder + var body: some View { + switch family { + case .systemLarge: + VStack { + Image("WidgetImage") + .resizable() + .aspectRatio(contentMode: .fit) + .cornerRadius(.init(integerLiteral: 12)) + .padding(EdgeInsets(top: CGFloat(8), leading: .zero, bottom: .zero, trailing: .zero)) + .accessibilityHidden(true) + + Text(NaturalLanguageTime(entry.date).description) + .multilineTextAlignment(.center) + .font(.title) + .padding(EdgeInsets(top: CGFloat(16), leading: .zero, bottom: CGFloat(32), trailing: .zero)) + + } + .padding(.all) + case .systemMedium, .systemExtraLarge: + HStack { + Image("WidgetImage") + .resizable() + .aspectRatio(contentMode: .fit) + .cornerRadius(.init(integerLiteral: 12)) + .accessibilityHidden(true) + + Text(NaturalLanguageTime(entry.date).description) + .multilineTextAlignment(.center) + .font(.headline) + .padding(EdgeInsets(top: .zero, leading: CGFloat(8), bottom: .zero, trailing: .zero)) + } + .padding(.all) + case .accessoryRectangular: + Text(NaturalLanguageTime(entry.date).description) + .multilineTextAlignment(.center) + .font(.system(size: 500)) + .minimumScaleFactor(0.01) + default: + Text(NaturalLanguageTime(entry.date).description) + .multilineTextAlignment(.center) + } + } +} + +struct LazyClockWidget: Widget { + let kind: String = "LazyClockWidget" + + var body: some WidgetConfiguration { + IntentConfiguration(kind: kind, intent: LazyClockIntent.self, provider: Provider()) { entry in + LazyClockWidgetEntryView(entry: entry) + } + .configurationDisplayName(NSLocalizedString("widget-name", comment: "Name of the widget")) + .description(NSLocalizedString("widget-desc", comment: "Description for the widget")) + .supportedFamilies([ + .accessoryRectangular, + .accessoryCircular, + .accessoryInline, + .systemSmall, + .systemMedium, + .systemLarge, + .systemExtraLarge + ]) + } +} + +struct LazyClockWidget_Previews: PreviewProvider { + static var previews: some View { + LazyClockWidgetEntryView(entry: LazyClockEntry(date: Date(), configuration: LazyClockIntent())) + .previewContext(WidgetPreviewContext(family: .systemMedium)) + } +} diff --git a/LazyClockWidget/LazyClockWidgetBundle.swift b/LazyClockWidget/LazyClockWidgetBundle.swift new file mode 100644 index 0000000..bbcefbf --- /dev/null +++ b/LazyClockWidget/LazyClockWidgetBundle.swift @@ -0,0 +1,18 @@ +// +// LazyClockWidgetBundle.swift +// LazyClockWidget +// +// Created by Hundter Biede on 11/5/22. +// Copyright © 2022 Hundter Biede. All rights reserved. +// + +import WidgetKit +import SwiftUI + +@main +struct LazyClockWidgetBundle: WidgetBundle { + @WidgetBundleBuilder + var body: some Widget { + LazyClockWidget() + } +} diff --git a/LazyClockWidget/en.lproj/WidgetLocalizable.strings b/LazyClockWidget/en.lproj/WidgetLocalizable.strings new file mode 100644 index 0000000..a281d92 --- /dev/null +++ b/LazyClockWidget/en.lproj/WidgetLocalizable.strings @@ -0,0 +1,13 @@ +/* + Localizable.strings + Lazy Clock + + Created by Hundter Biede on 11/5/22. + Copyright © 2022 Hundter Biede. All rights reserved. +*/ + +/* Name of the widget */ +"widget-desc" = "Lazy Clock"; + +/* Description for the widget */ +"widget-name" = "Time in natural language"; diff --git a/LazyClockWidget/es.lproj/WidgetLocalizable.strings b/LazyClockWidget/es.lproj/WidgetLocalizable.strings new file mode 100644 index 0000000..3794103 --- /dev/null +++ b/LazyClockWidget/es.lproj/WidgetLocalizable.strings @@ -0,0 +1,13 @@ +/* + Localizable.strings + Lazy Clock + + Created by Hundter Biede on 11/5/22. + Copyright © 2022 Hundter Biede. All rights reserved. +*/ + +/* Name of the widget */ +"widget-desc" = "Lazy Clock"; + +/* Description for the widget */ +"widget-name" = "La hora en lenguaje natural"; diff --git a/LazyClockWidget/fr.lproj/WidgetLocalizable.strings b/LazyClockWidget/fr.lproj/WidgetLocalizable.strings new file mode 100644 index 0000000..622190e --- /dev/null +++ b/LazyClockWidget/fr.lproj/WidgetLocalizable.strings @@ -0,0 +1,13 @@ +/* + Localizable.strings + Lazy Clock + + Created by Hundter Biede on 11/5/22. + Copyright © 2022 Hundter Biede. All rights reserved. +*/ + +/* Name of the widget */ +"widget-desc" = "Lazy Clock"; + +/* Description for the widget */ +"widget-name" = "Le temps en langage naturel"; diff --git a/LazyClockWidgetExtension.entitlements b/LazyClockWidgetExtension.entitlements new file mode 100644 index 0000000..ee95ab7 --- /dev/null +++ b/LazyClockWidgetExtension.entitlements @@ -0,0 +1,10 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.network.client + + + diff --git a/LazyIntent/Info.plist b/LazyIntent/Info.plist deleted file mode 100644 index 93be717..0000000 --- a/LazyIntent/Info.plist +++ /dev/null @@ -1,43 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleDisplayName - $(PRODUCT_NAME) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - XPC! - CFBundleShortVersionString - $(LC_Version) - CFBundleVersion - $(LC_Build) - NSExtension - - NSExtensionAttributes - - IntentsRestrictedWhileLocked - - IntentsRestrictedWhileProtectedDataUnavailable - - IntentsSupported - - LazyClockIntent - LazyClockSpecifiedIntent - - - NSExtensionPointIdentifier - com.apple.intents-service - NSExtensionPrincipalClass - $(PRODUCT_MODULE_NAME).IntentHandler - - - diff --git a/LazyIntent/IntentHandler.swift b/LazyIntent/IntentHandler.swift deleted file mode 100644 index eb8becb..0000000 --- a/LazyIntent/IntentHandler.swift +++ /dev/null @@ -1,22 +0,0 @@ -// -// IntentHandler.swift -// LazyIntent -// -// Created by Hundter Biede on 8/27/18. -// Copyright © 2018 Hundter Biede. All rights reserved. -// - -import Intents - -class IntentHandler: INExtension { - - override func handler(for intent: INIntent) -> Any { - if intent is LazyClockIntent { - return LazyClockIntentHandler() - } else if intent is LazyClockSpecifiedIntent { - return LazyClockSpecifiedIntentHandler() - } else { - fatalError("Unhandled intent type: \(intent)") - } - } -} diff --git a/LazyIntent/LazyClockIntentHandler.swift b/LazyIntent/LazyClockIntentHandler.swift deleted file mode 100644 index 906c424..0000000 --- a/LazyIntent/LazyClockIntentHandler.swift +++ /dev/null @@ -1,30 +0,0 @@ -// -// LazyClockIntentHandler.swift -// LazyIntent -// -// Created by Hundter Biede on 8/27/18. -// Copyright © 2018 Hundter Biede. All rights reserved. -// - -import Foundation - -class LazyClockIntentHandler: NSObject, LazyClockIntentHandling { - - /// DateFormatter to be used to update the time. - let dForm: DateFormatter = { - let temp = DateFormatter() - temp.dateFormat = "HH:mm" - return temp - }() - - func handle(intent: LazyClockIntent, completion: @escaping (LazyClockIntentResponse) -> Void) { - var natTime = NaturalLanguageTime.NatTime() - /* - //Set timeString to inputTime if it is a parameter that exists for intent, else set it to the current time - let inputTime = intent.inputTime == nil ? dForm.string(from: Date()) : intent.inputTime! - natTime.timeString = inputTime - */ - natTime.timeString = dForm.string(from: Date()) - completion(LazyClockIntentResponse.success(timeResponse: natTime.getNatLangString())) - } -} diff --git a/LazyIntent/LazyClockSpecifiedIntentHandler.swift b/LazyIntent/LazyClockSpecifiedIntentHandler.swift deleted file mode 100644 index 98c30fa..0000000 --- a/LazyIntent/LazyClockSpecifiedIntentHandler.swift +++ /dev/null @@ -1,57 +0,0 @@ -// -// LazyClockSpecifiedHandler.swift -// LazyIntent -// -// Created by Hundter Biede on 9/18/18. -// Copyright © 2018 Hundter Biede. All rights reserved. -// - -import Foundation -import UIKit - -class LazyClockSpecifiedIntentHandler: NSObject, LazyClockSpecifiedIntentHandling { - func handle(intent: LazyClockSpecifiedIntent, completion: @escaping (LazyClockSpecifiedIntentResponse) -> Void) { - /* - //Set timeString to inputTime if it is a parameter that exists for intent, else set it to the current time - let inputTime = intent.inputTime == nil ? dForm.string(from: Date()) : intent.inputTime! - natTime.timeString = inputTime - */ - - let pasteboardString = UIPasteboard.general.string - guard let pasteboardContents = pasteboardString else { - completion(LazyClockSpecifiedIntentResponse.failure(timeInput: "nil")) - return - } - - if validTimeCode(input: pasteboardContents) { - var natTime = NaturalLanguageTime.NatTime() - natTime.timeString = pasteboardContents - UIPasteboard.general.string = natTime.getNatLangString() - completion(LazyClockSpecifiedIntentResponse.success(timeResponse: natTime.getNatLangString())) - } else { - completion(LazyClockSpecifiedIntentResponse.failure(timeInput: pasteboardContents)) - } - - } - - func validTimeCode(input: String) -> Bool { - let regexPattern = "^[0-9]{1,2}:[0-5][0-9]$" - var matches: [NSTextCheckingResult] - if let regex = try? NSRegularExpression(pattern: regexPattern) { - matches = regex.matches(in: input, options:[], range: NSRange(location: 0, length: input.count)) - if matches[0].range != NSRange(location: 0, length: input.count) { - return false - } - } - - let tempArray = input.split(separator: ":") - if Int(tempArray[0])! < 0 || Int(tempArray[0])! >= 24 { - return false - } - if Int(tempArray[1])! < 0 || Int(tempArray[1])! >= 60 { - return false - } - - return true - } -} diff --git a/TodayView/Base.lproj/TodayViewInterface.storyboard b/TodayView/Base.lproj/TodayViewInterface.storyboard deleted file mode 100644 index 662213b..0000000 --- a/TodayView/Base.lproj/TodayViewInterface.storyboard +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/TodayView/Info.plist b/TodayView/Info.plist deleted file mode 100644 index 0ef6fa6..0000000 --- a/TodayView/Info.plist +++ /dev/null @@ -1,31 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleDisplayName - $(PRODUCT_NAME) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - XPC! - CFBundleShortVersionString - $(MARKETING_VERSION) - CFBundleVersion - $(LC_Build) - NSExtension - - NSExtensionMainStoryboard - TodayViewInterface - NSExtensionPointIdentifier - com.apple.widget-extension - - - diff --git a/TodayView/TodayViewController.swift b/TodayView/TodayViewController.swift deleted file mode 100644 index 2afd4c6..0000000 --- a/TodayView/TodayViewController.swift +++ /dev/null @@ -1,39 +0,0 @@ -// -// TodayViewController.swift -// TodayView -// -// Created by Hundter Biede on 8/27/18. -// Copyright © 2018 Hundter Biede. All rights reserved. -// - -import UIKit -import NotificationCenter - -class TodayViewController: UIViewController, NCWidgetProviding { - /// IBOutlet for timeLbl - @IBOutlet var timeLbl: UILabel! - - /// DateFormatter to be used to update the time, either to the form of short or long form time. - let dForm: DateFormatter = { - let temp = DateFormatter() - temp.dateFormat = "HH:mm" - return temp - }() - - override func viewDidLoad() { - super.viewDidLoad() - updateTime() - } - - /// Updates time displayed on display. Called from Timer in viewDidLoad(). - @objc func updateTime() { - var natTime = NaturalLanguageTime.NatTime() - natTime.timeString = dForm.string(from: Date()) - timeLbl.text = natTime.getNatLangString() - } - - func widgetPerformUpdate(completionHandler: (@escaping (NCUpdateResult) -> Void)) { - completionHandler(NCUpdateResult.noData) - } - -} diff --git a/TodayView/en-GB.lproj/TodayViewInterface.strings b/TodayView/en-GB.lproj/TodayViewInterface.strings deleted file mode 100644 index 6d79cd4..0000000 --- a/TodayView/en-GB.lproj/TodayViewInterface.strings +++ /dev/null @@ -1,3 +0,0 @@ - -/* Class = "UILabel"; text = "Time Label"; ObjectID = "GcN-lo-r42"; Note = "TodayViewLabel"; */ -"GcN-lo-r42.text" = "Time Label"; diff --git a/TodayView/en.lproj/TodayViewInterface.strings b/TodayView/en.lproj/TodayViewInterface.strings deleted file mode 100644 index 6d79cd4..0000000 --- a/TodayView/en.lproj/TodayViewInterface.strings +++ /dev/null @@ -1,3 +0,0 @@ - -/* Class = "UILabel"; text = "Time Label"; ObjectID = "GcN-lo-r42"; Note = "TodayViewLabel"; */ -"GcN-lo-r42.text" = "Time Label";