summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorivar <i@oiee.no>2025-12-17 00:16:58 +0100
committerivar <i@oiee.no>2025-12-17 00:16:58 +0100
commitbfd75822b3e9882ff4e85d13a0e3658b60e6329d (patch)
tree223462af215c5ee7eef9e6bcbb48dfbe1b97d1e3
parent0e1635b057903434c0f193ad9ead7035150b0773 (diff)
downloadsolverv-master.tar.xz
solverv-master.zip
Initial commitHEADmaster
-rw-r--r--Solsnu.Widget/Assets.xcassets/AccentColor.colorset/Contents.json11
-rw-r--r--Solsnu.Widget/Assets.xcassets/AppIcon.appiconset/Contents.json35
-rw-r--r--Solsnu.Widget/Assets.xcassets/Contents.json6
-rw-r--r--Solsnu.Widget/Assets.xcassets/WidgetBackground.colorset/Contents.json11
-rw-r--r--Solsnu.Widget/Info.plist11
-rw-r--r--Solsnu.Widget/Solsnu_Widget.swift133
-rw-r--r--Solsnu.Widget/Solsnu_WidgetBundle.swift17
-rw-r--r--Solsnu.Widget/Solsnu_WidgetControl.swift54
-rw-r--r--Solverv.xcodeproj/project.pbxproj191
-rw-r--r--Solverv.xcodeproj/xcuserdata/ivarlovlie.xcuserdatad/xcschemes/xcschememanagement.plist5
10 files changed, 474 insertions, 0 deletions
diff --git a/Solsnu.Widget/Assets.xcassets/AccentColor.colorset/Contents.json b/Solsnu.Widget/Assets.xcassets/AccentColor.colorset/Contents.json
new file mode 100644
index 0000000..eb87897
--- /dev/null
+++ b/Solsnu.Widget/Assets.xcassets/AccentColor.colorset/Contents.json
@@ -0,0 +1,11 @@
+{
+ "colors" : [
+ {
+ "idiom" : "universal"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/Solsnu.Widget/Assets.xcassets/AppIcon.appiconset/Contents.json b/Solsnu.Widget/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 0000000..2305880
--- /dev/null
+++ b/Solsnu.Widget/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,35 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "platform" : "ios",
+ "size" : "1024x1024"
+ },
+ {
+ "appearances" : [
+ {
+ "appearance" : "luminosity",
+ "value" : "dark"
+ }
+ ],
+ "idiom" : "universal",
+ "platform" : "ios",
+ "size" : "1024x1024"
+ },
+ {
+ "appearances" : [
+ {
+ "appearance" : "luminosity",
+ "value" : "tinted"
+ }
+ ],
+ "idiom" : "universal",
+ "platform" : "ios",
+ "size" : "1024x1024"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/Solsnu.Widget/Assets.xcassets/Contents.json b/Solsnu.Widget/Assets.xcassets/Contents.json
new file mode 100644
index 0000000..73c0059
--- /dev/null
+++ b/Solsnu.Widget/Assets.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/Solsnu.Widget/Assets.xcassets/WidgetBackground.colorset/Contents.json b/Solsnu.Widget/Assets.xcassets/WidgetBackground.colorset/Contents.json
new file mode 100644
index 0000000..eb87897
--- /dev/null
+++ b/Solsnu.Widget/Assets.xcassets/WidgetBackground.colorset/Contents.json
@@ -0,0 +1,11 @@
+{
+ "colors" : [
+ {
+ "idiom" : "universal"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/Solsnu.Widget/Info.plist b/Solsnu.Widget/Info.plist
new file mode 100644
index 0000000..0f118fb
--- /dev/null
+++ b/Solsnu.Widget/Info.plist
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>NSExtension</key>
+ <dict>
+ <key>NSExtensionPointIdentifier</key>
+ <string>com.apple.widgetkit-extension</string>
+ </dict>
+</dict>
+</plist>
diff --git a/Solsnu.Widget/Solsnu_Widget.swift b/Solsnu.Widget/Solsnu_Widget.swift
new file mode 100644
index 0000000..bd71672
--- /dev/null
+++ b/Solsnu.Widget/Solsnu_Widget.swift
@@ -0,0 +1,133 @@
+//
+// Solsnu_Widget.swift
+// Solsnu.Widget
+//
+// Created by Ivar Løvlie on 15/12/2025.
+//
+
+import WidgetKit
+import SwiftUI
+
+struct Provider: TimelineProvider {
+ func placeholder(in context: Context) -> SolvervEntry {
+ SolvervEntry(def: SolvervDef(date: Date()))
+ }
+
+ func getSnapshot(in context: Context, completion: @escaping (SolvervEntry) -> ()) {
+ let entry = SolvervEntry(def: SolvervDef(date: Date()))
+ completion(entry)
+ }
+
+ func getTimeline(in context: Context, completion: @escaping (Timeline<Entry>) -> ()) {
+ var entries: [SolvervEntry] = []
+ let currentDate = Date()
+ for hourOffset in 0 ..< 5 {
+ let entryDate = Calendar.current.date(byAdding: .hour, value: hourOffset, to: currentDate)!
+ let entry = SolvervEntry(def: SolvervDef(date: currentDate))
+ entries.append(entry)
+ }
+
+ let timeline = Timeline(entries: entries, policy: .atEnd)
+ completion(timeline)
+ }
+}
+
+struct SolvervEntry: TimelineEntry {
+ let date: Date
+ let emoji: String
+ let def: SolvervDef
+
+ init(def: SolvervDef, date: Date? = nil) {
+ self.date = date ?? def.date
+ self.emoji = def.emoji()
+ self.def = def;
+ }
+}
+
+struct Solsnu_WidgetEntryView : View {
+ var entry: Provider.Entry
+
+ var body: some View {
+ VStack {
+ Text("Time:")
+ Text(entry.date, style: .time)
+
+ Text("Emoji:")
+ Text(entry.emoji)
+ }
+ }
+}
+
+struct Solsnu_Widget: Widget {
+ let kind: String = "Solsnu_Widget"
+
+ var body: some WidgetConfiguration {
+ StaticConfiguration(kind: kind, provider: Provider()) { entry in
+ if #available(iOS 17.0, *) {
+ Solsnu_WidgetEntryView(entry: entry)
+ .containerBackground(.fill.tertiary, for: .widget)
+ } else {
+ Solsnu_WidgetEntryView(entry: entry)
+ .padding()
+ .background()
+ }
+ }
+ .configurationDisplayName("My Widget")
+ .description("This is an example widget.")
+ }
+}
+
+#Preview(as: .systemSmall) {
+ Solsnu_Widget()
+} timeline: {
+ SolvervEntry(def: SolvervDef(utcString: "2025-09-22 18:20:00"))
+ SolvervEntry(def: SolvervDef(utcString: "2025-12-21 15:03:00"))
+ SolvervEntry(def: SolvervDef(utcString: "2026-03-20 14:46:00"))
+ SolvervEntry(def: SolvervDef(utcString: "2026-06-21 08:25:00"))
+ SolvervEntry(def: SolvervDef(utcString: "2026-09-23 00:06:00"))
+ SolvervEntry(def: SolvervDef(utcString: "2026-12-21 20:50:00"))
+ SolvervEntry(def: SolvervDef(utcString: "2027-03-20 20:25:00"))
+ SolvervEntry(def: SolvervDef(utcString: "2027-06-21 14:11:00"))
+ SolvervEntry(def: SolvervDef(utcString: "2027-09-23 06:02:00"))
+ SolvervEntry(def: SolvervDef(utcString: "2027-12-22 02:43:00"))
+ SolvervEntry(def: SolvervDef(utcString: "2028-03-20 02:17:00"))
+ SolvervEntry(def: SolvervDef(utcString: "2028-06-20 20:02:00"))
+ SolvervEntry(def: SolvervDef(utcString: "2028-09-22 11:45:00"))
+ SolvervEntry(def: SolvervDef(utcString: "2028-12-21 08:20:00"))
+ SolvervEntry(def: SolvervDef(utcString: "2029-03-20 08:01:00"))
+ SolvervEntry(def: SolvervDef(utcString: "2029-06-21 01:48:00"))
+ SolvervEntry(def: SolvervDef(utcString: "2029-09-22 17:37:00"))
+ SolvervEntry(def: SolvervDef(utcString: "2029-12-21 14:14:00"))
+ SolvervEntry(def: SolvervDef(utcString: "2030-03-20 13:51:00"))
+ SolvervEntry(def: SolvervDef(utcString: "2030-06-21 07:31:00"))
+ SolvervEntry(def: SolvervDef(utcString: "2030-09-22 23:27:00"))
+ SolvervEntry(def: SolvervDef(utcString: "2030-12-21 20:09:00"))
+}
+
+struct SolvervDef {
+ let date: Date;
+
+ init(date:Date) {
+ self.date = date;
+ }
+
+ init(utcString:String) {
+ let formatter = DateFormatter()
+ formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
+ formatter.timeZone = TimeZone(abbreviation: "UTC")
+ // Should probably guard this, but not now
+ let date = formatter.date(from: utcString)!
+ self.date = date
+ }
+
+ func emoji() -> String {
+ let components = Calendar.current.dateComponents([.year,.month,.day,.hour,.minute], from: date)
+ let hour = components.hour!
+ let minute = components.minute!
+ if hour == 2 && minute == 43 {
+ return "😀"
+ } else {
+ return ""
+ }
+ }
+}
diff --git a/Solsnu.Widget/Solsnu_WidgetBundle.swift b/Solsnu.Widget/Solsnu_WidgetBundle.swift
new file mode 100644
index 0000000..24e5cbe
--- /dev/null
+++ b/Solsnu.Widget/Solsnu_WidgetBundle.swift
@@ -0,0 +1,17 @@
+//
+// Solsnu_WidgetBundle.swift
+// Solsnu.Widget
+//
+// Created by Ivar Løvlie on 15/12/2025.
+//
+
+import WidgetKit
+import SwiftUI
+
+@main
+struct Solsnu_WidgetBundle: WidgetBundle {
+ var body: some Widget {
+ Solsnu_Widget()
+ Solsnu_WidgetControl()
+ }
+}
diff --git a/Solsnu.Widget/Solsnu_WidgetControl.swift b/Solsnu.Widget/Solsnu_WidgetControl.swift
new file mode 100644
index 0000000..62cd817
--- /dev/null
+++ b/Solsnu.Widget/Solsnu_WidgetControl.swift
@@ -0,0 +1,54 @@
+//
+// Solsnu_WidgetControl.swift
+// Solsnu.Widget
+//
+// Created by Ivar Løvlie on 15/12/2025.
+//
+
+import AppIntents
+import SwiftUI
+import WidgetKit
+
+struct Solsnu_WidgetControl: ControlWidget {
+ var body: some ControlWidgetConfiguration {
+ StaticControlConfiguration(
+ kind: "ivarivarivar.Solverv.Solsnu.Widget",
+ provider: Provider()
+ ) { value in
+ ControlWidgetToggle(
+ "Start Timer",
+ isOn: value,
+ action: StartTimerIntent()
+ ) { isRunning in
+ Label(isRunning ? "On" : "Off", systemImage: "timer")
+ }
+ }
+ .displayName("Timer")
+ .description("A an example control that runs a timer.")
+ }
+}
+
+extension Solsnu_WidgetControl {
+ struct Provider: ControlValueProvider {
+ var previewValue: Bool {
+ false
+ }
+
+ func currentValue() async throws -> Bool {
+ let isRunning = true // Check if the timer is running
+ return isRunning
+ }
+ }
+}
+
+struct StartTimerIntent: SetValueIntent {
+ static let title: LocalizedStringResource = "Start a timer"
+
+ @Parameter(title: "Timer is running")
+ var value: Bool
+
+ func perform() async throws -> some IntentResult {
+ // Start / stop the timer based on `value`.
+ return .result()
+ }
+}
diff --git a/Solverv.xcodeproj/project.pbxproj b/Solverv.xcodeproj/project.pbxproj
index 5dd19be..64b581c 100644
--- a/Solverv.xcodeproj/project.pbxproj
+++ b/Solverv.xcodeproj/project.pbxproj
@@ -6,16 +6,67 @@
objectVersion = 77;
objects = {
+/* Begin PBXBuildFile section */
+ 1B8629D62EF0C656005A1C75 /* WidgetKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1B8629D52EF0C656005A1C75 /* WidgetKit.framework */; };
+ 1B8629D82EF0C656005A1C75 /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1B8629D72EF0C656005A1C75 /* SwiftUI.framework */; };
+ 1B8629E52EF0C657005A1C75 /* Solsnu.WidgetExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 1B8629D32EF0C656005A1C75 /* Solsnu.WidgetExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+ 1B8629E32EF0C657005A1C75 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 1B8629B72EF0C636005A1C75 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 1B8629D22EF0C656005A1C75;
+ remoteInfo = Solsnu.WidgetExtension;
+ };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+ 1B8629EA2EF0C657005A1C75 /* Embed Foundation Extensions */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = "";
+ dstSubfolderSpec = 13;
+ files = (
+ 1B8629E52EF0C657005A1C75 /* Solsnu.WidgetExtension.appex in Embed Foundation Extensions */,
+ );
+ name = "Embed Foundation Extensions";
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXCopyFilesBuildPhase section */
+
/* Begin PBXFileReference section */
1B8629BF2EF0C636005A1C75 /* Solverv.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Solverv.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 1B8629D32EF0C656005A1C75 /* Solsnu.WidgetExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = Solsnu.WidgetExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
+ 1B8629D52EF0C656005A1C75 /* WidgetKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WidgetKit.framework; path = System/Library/Frameworks/WidgetKit.framework; sourceTree = SDKROOT; };
+ 1B8629D72EF0C656005A1C75 /* SwiftUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftUI.framework; path = System/Library/Frameworks/SwiftUI.framework; sourceTree = SDKROOT; };
/* End PBXFileReference section */
+/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */
+ 1B8629E62EF0C657005A1C75 /* Exceptions for "Solsnu.Widget" folder in "Solsnu.WidgetExtension" target */ = {
+ isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
+ membershipExceptions = (
+ Info.plist,
+ );
+ target = 1B8629D22EF0C656005A1C75 /* Solsnu.WidgetExtension */;
+ };
+/* End PBXFileSystemSynchronizedBuildFileExceptionSet section */
+
/* Begin PBXFileSystemSynchronizedRootGroup section */
1B8629C12EF0C636005A1C75 /* Solverv */ = {
isa = PBXFileSystemSynchronizedRootGroup;
path = Solverv;
sourceTree = "<group>";
};
+ 1B8629D92EF0C656005A1C75 /* Solsnu.Widget */ = {
+ isa = PBXFileSystemSynchronizedRootGroup;
+ exceptions = (
+ 1B8629E62EF0C657005A1C75 /* Exceptions for "Solsnu.Widget" folder in "Solsnu.WidgetExtension" target */,
+ );
+ path = Solsnu.Widget;
+ sourceTree = "<group>";
+ };
/* End PBXFileSystemSynchronizedRootGroup section */
/* Begin PBXFrameworksBuildPhase section */
@@ -26,6 +77,15 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ 1B8629D02EF0C656005A1C75 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 1B8629D82EF0C656005A1C75 /* SwiftUI.framework in Frameworks */,
+ 1B8629D62EF0C656005A1C75 /* WidgetKit.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
@@ -33,6 +93,8 @@
isa = PBXGroup;
children = (
1B8629C12EF0C636005A1C75 /* Solverv */,
+ 1B8629D92EF0C656005A1C75 /* Solsnu.Widget */,
+ 1B8629D42EF0C656005A1C75 /* Frameworks */,
1B8629C02EF0C636005A1C75 /* Products */,
);
sourceTree = "<group>";
@@ -41,10 +103,20 @@
isa = PBXGroup;
children = (
1B8629BF2EF0C636005A1C75 /* Solverv.app */,
+ 1B8629D32EF0C656005A1C75 /* Solsnu.WidgetExtension.appex */,
);
name = Products;
sourceTree = "<group>";
};
+ 1B8629D42EF0C656005A1C75 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 1B8629D52EF0C656005A1C75 /* WidgetKit.framework */,
+ 1B8629D72EF0C656005A1C75 /* SwiftUI.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "<group>";
+ };
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
@@ -55,10 +127,12 @@
1B8629BB2EF0C636005A1C75 /* Sources */,
1B8629BC2EF0C636005A1C75 /* Frameworks */,
1B8629BD2EF0C636005A1C75 /* Resources */,
+ 1B8629EA2EF0C657005A1C75 /* Embed Foundation Extensions */,
);
buildRules = (
);
dependencies = (
+ 1B8629E42EF0C657005A1C75 /* PBXTargetDependency */,
);
fileSystemSynchronizedGroups = (
1B8629C12EF0C636005A1C75 /* Solverv */,
@@ -70,6 +144,28 @@
productReference = 1B8629BF2EF0C636005A1C75 /* Solverv.app */;
productType = "com.apple.product-type.application";
};
+ 1B8629D22EF0C656005A1C75 /* Solsnu.WidgetExtension */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 1B8629E72EF0C657005A1C75 /* Build configuration list for PBXNativeTarget "Solsnu.WidgetExtension" */;
+ buildPhases = (
+ 1B8629CF2EF0C656005A1C75 /* Sources */,
+ 1B8629D02EF0C656005A1C75 /* Frameworks */,
+ 1B8629D12EF0C656005A1C75 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ fileSystemSynchronizedGroups = (
+ 1B8629D92EF0C656005A1C75 /* Solsnu.Widget */,
+ );
+ name = Solsnu.WidgetExtension;
+ packageProductDependencies = (
+ );
+ productName = Solsnu.WidgetExtension;
+ productReference = 1B8629D32EF0C656005A1C75 /* Solsnu.WidgetExtension.appex */;
+ productType = "com.apple.product-type.app-extension";
+ };
/* End PBXNativeTarget section */
/* Begin PBXProject section */
@@ -83,6 +179,9 @@
1B8629BE2EF0C636005A1C75 = {
CreatedOnToolsVersion = 26.0.1;
};
+ 1B8629D22EF0C656005A1C75 = {
+ CreatedOnToolsVersion = 26.0.1;
+ };
};
};
buildConfigurationList = 1B8629BA2EF0C636005A1C75 /* Build configuration list for PBXProject "Solverv" */;
@@ -100,6 +199,7 @@
projectRoot = "";
targets = (
1B8629BE2EF0C636005A1C75 /* Solverv */,
+ 1B8629D22EF0C656005A1C75 /* Solsnu.WidgetExtension */,
);
};
/* End PBXProject section */
@@ -112,6 +212,13 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ 1B8629D12EF0C656005A1C75 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
@@ -122,8 +229,23 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ 1B8629CF2EF0C656005A1C75 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
/* End PBXSourcesBuildPhase section */
+/* Begin PBXTargetDependency section */
+ 1B8629E42EF0C657005A1C75 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 1B8629D22EF0C656005A1C75 /* Solsnu.WidgetExtension */;
+ targetProxy = 1B8629E32EF0C657005A1C75 /* PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
+
/* Begin XCBuildConfiguration section */
1B8629CA2EF0C637005A1C75 /* Debug */ = {
isa = XCBuildConfiguration;
@@ -310,6 +432,66 @@
};
name = Release;
};
+ 1B8629E82EF0C657005A1C75 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+ ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground;
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ DEVELOPMENT_TEAM = ZH95BL9NUK;
+ GENERATE_INFOPLIST_FILE = YES;
+ INFOPLIST_FILE = Solsnu.Widget/Info.plist;
+ INFOPLIST_KEY_CFBundleDisplayName = Solsnu.Widget;
+ INFOPLIST_KEY_NSHumanReadableCopyright = "";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@executable_path/../../Frameworks",
+ );
+ MARKETING_VERSION = 1.0;
+ PRODUCT_BUNDLE_IDENTIFIER = "ivarivarivar.Solverv.Solsnu-Widget";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SKIP_INSTALL = YES;
+ STRING_CATALOG_GENERATE_SYMBOLS = YES;
+ SWIFT_APPROACHABLE_CONCURRENCY = YES;
+ SWIFT_EMIT_LOC_STRINGS = YES;
+ SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ 1B8629E92EF0C657005A1C75 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+ ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground;
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ DEVELOPMENT_TEAM = ZH95BL9NUK;
+ GENERATE_INFOPLIST_FILE = YES;
+ INFOPLIST_FILE = Solsnu.Widget/Info.plist;
+ INFOPLIST_KEY_CFBundleDisplayName = Solsnu.Widget;
+ INFOPLIST_KEY_NSHumanReadableCopyright = "";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@executable_path/../../Frameworks",
+ );
+ MARKETING_VERSION = 1.0;
+ PRODUCT_BUNDLE_IDENTIFIER = "ivarivarivar.Solverv.Solsnu-Widget";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SKIP_INSTALL = YES;
+ STRING_CATALOG_GENERATE_SYMBOLS = YES;
+ SWIFT_APPROACHABLE_CONCURRENCY = YES;
+ SWIFT_EMIT_LOC_STRINGS = YES;
+ SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Release;
+ };
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
@@ -331,6 +513,15 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
+ 1B8629E72EF0C657005A1C75 /* Build configuration list for PBXNativeTarget "Solsnu.WidgetExtension" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 1B8629E82EF0C657005A1C75 /* Debug */,
+ 1B8629E92EF0C657005A1C75 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
/* End XCConfigurationList section */
};
rootObject = 1B8629B72EF0C636005A1C75 /* Project object */;
diff --git a/Solverv.xcodeproj/xcuserdata/ivarlovlie.xcuserdatad/xcschemes/xcschememanagement.plist b/Solverv.xcodeproj/xcuserdata/ivarlovlie.xcuserdatad/xcschemes/xcschememanagement.plist
index 40f29b1..d8ecd4f 100644
--- a/Solverv.xcodeproj/xcuserdata/ivarlovlie.xcuserdatad/xcschemes/xcschememanagement.plist
+++ b/Solverv.xcodeproj/xcuserdata/ivarlovlie.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -4,6 +4,11 @@
<dict>
<key>SchemeUserState</key>
<dict>
+ <key>Solsnu.WidgetExtension.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>orderHint</key>
+ <integer>1</integer>
+ </dict>
<key>Solverv.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>