chat we cooked
events can now be completed
widgets now acc have a bg and a nicer title
settings now says that there are widgets
also small ux improvements
This commit is contained in:
neon443
2025-03-28 18:32:09 +00:00
parent 1e36d15184
commit 68484da44f
8 changed files with 246 additions and 755 deletions

View File

@@ -3,651 +3,4 @@
uuid = "81691EC5-53AC-4338-9E2E-C1A8F23D20E5" uuid = "81691EC5-53AC-4338-9E2E-C1A8F23D20E5"
type = "1" type = "1"
version = "2.0"> version = "2.0">
<Breakpoints>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "4B7F7ADF-35FB-4F84-A9FE-98FB688F18BC"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "NearFuture/Item.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "248"
endingLineNumber = "248"
landmarkName = "importEvents(_:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.SymbolicBreakpoint">
<BreakpointContent
uuid = "328204F3-BB7C-46D3-9780-207657A70694"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "off"
moduleName = "">
<Locations>
<Location
uuid = "328204F3-BB7C-46D3-9780-207657A70694 - 87d7b665ad37852f"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "+[_DKBoolCategory off]"
moduleName = "CoreDuet"
usesParentBreakpointCondition = "Yes">
</Location>
</Locations>
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.SymbolicBreakpoint">
<BreakpointContent
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "disable"
moduleName = "">
<Locations>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 6896a8ccc1cbbf4"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "Combine._Introspection.disable() -&gt; ()"
moduleName = "Combine"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 3d6765b6178f5059"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "ExtensionFoundation._AppExtensionIdentity.disable() throws -&gt; ()"
moduleName = "ExtensionFoundation"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 8161317e462ef314"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "mlir::detail::RecoveryReproducerContext::disable()"
moduleName = "MetalPerformanceShadersGraph"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 828784d99bad6ae0"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "Inspector::InspectorAgent::disable()"
moduleName = "JavaScriptCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 967683c80b9dce9e"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "Inspector::InspectorHeapAgent::disable()"
moduleName = "JavaScriptCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - cd5bfad5c8aeee3a"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "Inspector::CSSBackendDispatcher::disable(long, WTF::RefPtr&lt;WTF::JSONImpl::Object, WTF::RawPtrTraits&lt;WTF::JSONImpl::Object&gt;, WTF::DefaultRefDerefTraits&lt;WTF::JSONImpl::Object&gt;&gt;&amp;&amp;)"
moduleName = "JavaScriptCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - bdbf0b88b25b469e"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "Inspector::HeapBackendDispatcher::disable(long, WTF::RefPtr&lt;WTF::JSONImpl::Object, WTF::RawPtrTraits&lt;WTF::JSONImpl::Object&gt;, WTF::DefaultRefDerefTraits&lt;WTF::JSONImpl::Object&gt;&gt;&amp;&amp;)"
moduleName = "JavaScriptCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 85542e03c97c01e6"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "Inspector::InspectorConsoleAgent::disable()"
moduleName = "JavaScriptCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 857aad0b240809f7"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "Inspector::InspectorRuntimeAgent::disable()"
moduleName = "JavaScriptCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 2d2f59495c3d0981"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "Inspector::PageBackendDispatcher::disable(long, WTF::RefPtr&lt;WTF::JSONImpl::Object, WTF::RawPtrTraits&lt;WTF::JSONImpl::Object&gt;, WTF::DefaultRefDerefTraits&lt;WTF::JSONImpl::Object&gt;&gt;&amp;&amp;)"
moduleName = "JavaScriptCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - d9cde3b9b7121035"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "Inspector::InspectorDebuggerAgent::disable()"
moduleName = "JavaScriptCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - eed8ac847a5f32c5"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "Inspector::CanvasBackendDispatcher::disable(long, WTF::RefPtr&lt;WTF::JSONImpl::Object, WTF::RawPtrTraits&lt;WTF::JSONImpl::Object&gt;, WTF::DefaultRefDerefTraits&lt;WTF::JSONImpl::Object&gt;&gt;&amp;&amp;)"
moduleName = "JavaScriptCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 38a87677558165e6"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "Inspector::MemoryBackendDispatcher::disable(long, WTF::RefPtr&lt;WTF::JSONImpl::Object, WTF::RawPtrTraits&lt;WTF::JSONImpl::Object&gt;, WTF::DefaultRefDerefTraits&lt;WTF::JSONImpl::Object&gt;&gt;&amp;&amp;)"
moduleName = "JavaScriptCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 96600d06ed31cae7"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "Inspector::WorkerBackendDispatcher::disable(long, WTF::RefPtr&lt;WTF::JSONImpl::Object, WTF::RawPtrTraits&lt;WTF::JSONImpl::Object&gt;, WTF::DefaultRefDerefTraits&lt;WTF::JSONImpl::Object&gt;&gt;&amp;&amp;)"
moduleName = "JavaScriptCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - cdd446ee611a2418"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "Inspector::BrowserBackendDispatcher::disable(long, WTF::RefPtr&lt;WTF::JSONImpl::Object, WTF::RawPtrTraits&lt;WTF::JSONImpl::Object&gt;, WTF::DefaultRefDerefTraits&lt;WTF::JSONImpl::Object&gt;&gt;&amp;&amp;)"
moduleName = "JavaScriptCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 2e440a3055fc9c0b"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "Inspector::ConsoleBackendDispatcher::disable(long, WTF::RefPtr&lt;WTF::JSONImpl::Object, WTF::RawPtrTraits&lt;WTF::JSONImpl::Object&gt;, WTF::DefaultRefDerefTraits&lt;WTF::JSONImpl::Object&gt;&gt;&amp;&amp;)"
moduleName = "JavaScriptCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 186a11e142cbd812"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "Inspector::NetworkBackendDispatcher::disable(long, WTF::RefPtr&lt;WTF::JSONImpl::Object, WTF::RawPtrTraits&lt;WTF::JSONImpl::Object&gt;, WTF::DefaultRefDerefTraits&lt;WTF::JSONImpl::Object&gt;&gt;&amp;&amp;)"
moduleName = "JavaScriptCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - db22091c1bc17e18"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "Inspector::RuntimeBackendDispatcher::disable(long, WTF::RefPtr&lt;WTF::JSONImpl::Object, WTF::RawPtrTraits&lt;WTF::JSONImpl::Object&gt;, WTF::DefaultRefDerefTraits&lt;WTF::JSONImpl::Object&gt;&gt;&amp;&amp;)"
moduleName = "JavaScriptCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - fbc1d48d07dfa5eb"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "Inspector::DatabaseBackendDispatcher::disable(long, WTF::RefPtr&lt;WTF::JSONImpl::Object, WTF::RawPtrTraits&lt;WTF::JSONImpl::Object&gt;, WTF::DefaultRefDerefTraits&lt;WTF::JSONImpl::Object&gt;&gt;&amp;&amp;)"
moduleName = "JavaScriptCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 7c57e27b44f652fb"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "Inspector::DebuggerBackendDispatcher::disable(long, WTF::RefPtr&lt;WTF::JSONImpl::Object, WTF::RawPtrTraits&lt;WTF::JSONImpl::Object&gt;, WTF::DefaultRefDerefTraits&lt;WTF::JSONImpl::Object&gt;&gt;&amp;&amp;)"
moduleName = "JavaScriptCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 27046c19a97a5509"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "Inspector::TimelineBackendDispatcher::disable(long, WTF::RefPtr&lt;WTF::JSONImpl::Object, WTF::RawPtrTraits&lt;WTF::JSONImpl::Object&gt;, WTF::DefaultRefDerefTraits&lt;WTF::JSONImpl::Object&gt;&gt;&amp;&amp;)"
moduleName = "JavaScriptCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - b797ebcd9571a918"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "Inspector::AnimationBackendDispatcher::disable(long, WTF::RefPtr&lt;WTF::JSONImpl::Object, WTF::RawPtrTraits&lt;WTF::JSONImpl::Object&gt;, WTF::DefaultRefDerefTraits&lt;WTF::JSONImpl::Object&gt;&gt;&amp;&amp;)"
moduleName = "JavaScriptCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 84b9d847a79031b3"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "Inspector::IndexedDBBackendDispatcher::disable(long, WTF::RefPtr&lt;WTF::JSONImpl::Object, WTF::RawPtrTraits&lt;WTF::JSONImpl::Object&gt;, WTF::DefaultRefDerefTraits&lt;WTF::JSONImpl::Object&gt;&gt;&amp;&amp;)"
moduleName = "JavaScriptCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 2137b52e52f0ff23"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "Inspector::InspectorBackendDispatcher::disable(long, WTF::RefPtr&lt;WTF::JSONImpl::Object, WTF::RawPtrTraits&lt;WTF::JSONImpl::Object&gt;, WTF::DefaultRefDerefTraits&lt;WTF::JSONImpl::Object&gt;&gt;&amp;&amp;)"
moduleName = "JavaScriptCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - d72751272d8e240d"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "Inspector::LayerTreeBackendDispatcher::disable(long, WTF::RefPtr&lt;WTF::JSONImpl::Object, WTF::RawPtrTraits&lt;WTF::JSONImpl::Object&gt;, WTF::DefaultRefDerefTraits&lt;WTF::JSONImpl::Object&gt;&gt;&amp;&amp;)"
moduleName = "JavaScriptCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 2ab60d2a9a68bcc5"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "Inspector::DOMStorageBackendDispatcher::disable(long, WTF::RefPtr&lt;WTF::JSONImpl::Object, WTF::RawPtrTraits&lt;WTF::JSONImpl::Object&gt;, WTF::DefaultRefDerefTraits&lt;WTF::JSONImpl::Object&gt;&gt;&amp;&amp;)"
moduleName = "JavaScriptCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - b9b7f049fa10dcec"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "Inspector::ApplicationCacheBackendDispatcher::disable(long, WTF::RefPtr&lt;WTF::JSONImpl::Object, WTF::RawPtrTraits&lt;WTF::JSONImpl::Object&gt;, WTF::DefaultRefDerefTraits&lt;WTF::JSONImpl::Object&gt;&gt;&amp;&amp;)"
moduleName = "JavaScriptCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - d3a893aeaaf3c28b"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "WebCore::InspectorAnimationAgent::disable()"
moduleName = "WebCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - a949ec4ea435cc7a"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "WebCore::InspectorApplicationCacheAgent::disable()"
moduleName = "WebCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 36bf44ff805607c6"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "WebCore::InspectorCSSAgent::disable()"
moduleName = "WebCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 49164f9d2becb770"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "WebCore::InspectorCanvasAgent::disable()"
moduleName = "WebCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - ccb876c591a27322"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "WebCore::InspectorDOMDebuggerAgent::disable()"
moduleName = "WebCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - cb7af1cf48b9bd95"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "WebCore::InspectorDOMStorageAgent::disable()"
moduleName = "WebCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 72a12f147e15fd37"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "WebCore::InspectorDatabaseAgent::disable()"
moduleName = "WebCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - c1952621536a962"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "WebCore::InspectorIndexedDBAgent::disable()"
moduleName = "WebCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 1599a24929736bbc"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "WebCore::InspectorLayerTreeAgent::disable()"
moduleName = "WebCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 153bb6c61d22e655"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "WebCore::InspectorMemoryAgent::disable()"
moduleName = "WebCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - d475b09dd06fafc3"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "WebCore::InspectorNetworkAgent::disable()"
moduleName = "WebCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 4eb574206fee9793"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "WebCore::InspectorPageAgent::disable()"
moduleName = "WebCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - ab830f953a7e1f15"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "WebCore::InspectorTimelineAgent::disable()"
moduleName = "WebCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 82f5440257eb0352"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "WebCore::InspectorWorkerAgent::disable()"
moduleName = "WebCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - c8a3c6c8fc573a10"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "WebCore::WebHeapAgent::disable()"
moduleName = "WebCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 83764ad230ab9de3"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "WebCore::PageDOMDebuggerAgent::disable()"
moduleName = "WebCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 2e15aca6694be493"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "WebCore::PageHeapAgent::disable()"
moduleName = "WebCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 58f569529cc85606"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "WebCore::PageRuntimeAgent::disable()"
moduleName = "WebCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 50676d4ed4d2ff6c"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "WebCore::GraphicsContextGLANGLE::disable(unsigned int)"
moduleName = "WebCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 8fb25ebca0871f31"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "-[DMCTimerContext disable]"
moduleName = "DMCUtilities"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 513abd42b1c9f029"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "-[VKTimer disable]"
moduleName = "VectorKit"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 6f57e523b6694b1e"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "altitude::RoadRequestManager::disable()"
moduleName = "VectorKit"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - edd82b192321ccd9"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "altitude::SkeletonRequestManager::disable()"
moduleName = "VectorKit"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 66b15399bae67fdc"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "-[DADisableableObject disable]"
moduleName = "DataAccessExpress"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 921ff423092fb558"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "kd_precinct_pointer_server::disable()"
moduleName = "ImageIO"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 4db6a03f184a5171"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "-[MCTimerContext disable]"
moduleName = "ManagedConfiguration"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 895c3b28d3b0be6b"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "WebCore::AudioNodeInput::disable(WebCore::AudioNodeOutput*)"
moduleName = "WebCore"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 8e113a16851df014"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "SpectralOutput::disable()"
moduleName = "ShazamKit"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 8a37ac5636f777a"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "+[SpeakCorrections disable]"
moduleName = "AccessibilitySettingsLoader"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 6053f828b37b7463"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "-[AXMOutputManager disable]"
moduleName = "AXMediaUtilities"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 4e7018357b464219"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "WebKit::JSWebExtensionAPIAction::disable(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSValue*, unsigned long, OpaqueJSValue const* const*, OpaqueJSValue const**)"
moduleName = "WebKit"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - ed1dc064b7d56449"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "WebKit::InspectorBrowserAgent::disable()"
moduleName = "WebKit"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 8c7ce8a2ca95b7c1"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "WebKit::RemoteGraphicsContextGLProxy::disable(unsigned int)"
moduleName = "WebKit"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 85346bbe96bb9335"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "WebKit::WebExtensionAPIAction::disable(double, WTF::Ref&lt;WebKit::WebExtensionCallbackHandler, WTF::RawPtrTraits&lt;WebKit::WebExtensionCallbackHandler&gt;, WTF::DefaultRefDerefTraits&lt;WebKit::WebExtensionCallbackHandler&gt;&gt;&amp;&amp;, NSString* __autoreleasing*)"
moduleName = "WebKit"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 5eb2eb549c2daff5"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "-[MSTimerGate disable]"
moduleName = "CoreMediaStream"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - d2467d35396f9097"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "-[SFExtensionWrapper disable]"
moduleName = "MobileSafari"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 9361a2432fecca62"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "-[SFContentBlockerExtensionWrapper disable]"
moduleName = "MobileSafari"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - d23dcba3d53d98ae"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "-[SFWebExtensionExtensionWrapper disable]"
moduleName = "MobileSafari"
usesParentBreakpointCondition = "Yes">
</Location>
<Location
uuid = "A2F7727A-BA9E-4A62-BE81-62B5BB097DD3 - 1c348fa5c1f03ed0"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "-[WBSAppLink disable]"
moduleName = "SafariSharedUI"
usesParentBreakpointCondition = "Yes">
</Location>
</Locations>
</BreakpointContent>
</BreakpointProxy>
</Breakpoints>
</Bucket> </Bucket>

View File

@@ -12,6 +12,8 @@ struct AddEventView: View {
@ObservedObject var viewModel: EventViewModel @ObservedObject var viewModel: EventViewModel
@Binding var eventName: String @Binding var eventName: String
@Binding var eventComplete: Bool
@Binding var eventCompleteDesc: String
@Binding var eventSymbol: String @Binding var eventSymbol: String
@Binding var eventColor: Color @Binding var eventColor: Color
@Binding var eventDescription: String @Binding var eventDescription: String
@@ -123,6 +125,8 @@ struct AddEventView: View {
Button { Button {
viewModel.addEvent( viewModel.addEvent(
name: eventName, name: eventName,
complete: eventComplete,
completedDesc: eventCompleteDesc,
symbol: eventSymbol, symbol: eventSymbol,
color: ColorCodable(eventColor), color: ColorCodable(eventColor),
description: eventDescription, description: eventDescription,
@@ -140,7 +144,7 @@ struct AddEventView: View {
.disabled(eventName.isEmpty) .disabled(eventName.isEmpty)
if eventName.isEmpty { if eventName.isEmpty {
HStack { HStack {
Image(systemName: "exclamationmark.circle") Image(systemName: "exclamationmark")
.foregroundStyle(.red) .foregroundStyle(.red)
Text("Give your event a name.") Text("Give your event a name.")
} }
@@ -207,6 +211,8 @@ struct MagicClearButton: View {
AddEventView( AddEventView(
viewModel: EventViewModel(), viewModel: EventViewModel(),
eventName: .constant("Birthday"), eventName: .constant("Birthday"),
eventComplete: .constant(false),
eventCompleteDesc: .constant(""),
eventSymbol: .constant("star"), eventSymbol: .constant("star"),
eventColor: .constant(Color.red), eventColor: .constant(Color.red),
eventDescription: .constant("A very special day"), eventDescription: .constant("A very special day"),

View File

@@ -15,6 +15,8 @@ enum Field {
struct ContentView: View { struct ContentView: View {
@StateObject private var viewModel = EventViewModel() @StateObject private var viewModel = EventViewModel()
@State private var eventName = "" @State private var eventName = ""
@State private var eventComplete = false
@State private var eventCompleteDesc = ""
@State private var eventSymbol = "star" @State private var eventSymbol = "star"
@State private var eventColor: Color = [ @State private var eventColor: Color = [
Color.red, Color.red,
@@ -119,6 +121,8 @@ struct ContentView: View {
AddEventView( AddEventView(
viewModel: viewModel, viewModel: viewModel,
eventName: $eventName, eventName: $eventName,
eventComplete: $eventComplete,
eventCompleteDesc: $eventCompleteDesc,
eventSymbol: $eventSymbol, eventSymbol: $eventSymbol,
eventColor: $eventColor, eventColor: $eventColor,
eventDescription: $eventDescription, eventDescription: $eventDescription,
@@ -159,6 +163,7 @@ struct ContentView: View {
struct EventListView: View { struct EventListView: View {
@StateObject var viewModel: EventViewModel @StateObject var viewModel: EventViewModel
@State var event: Event @State var event: Event
@State var opaity: Double = 1
var body: some View { var body: some View {
NavigationLink() { NavigationLink() {
@@ -170,18 +175,33 @@ struct EventListView: View {
HStack { HStack {
RoundedRectangle(cornerRadius: 5) RoundedRectangle(cornerRadius: 5)
.frame(width: 5) .frame(width: 5)
.foregroundStyle(event.color.color) .foregroundStyle(
event.color.color.opacity(
event.complete ? 0.5 : 1
)
)
.padding(.leading, -10) .padding(.leading, -10)
.padding(.vertical, 5) .padding(.vertical, 5)
.animation(.spring, value: event.complete)
VStack(alignment: .leading) { VStack(alignment: .leading) {
HStack { HStack {
Image(systemName: event.symbol) Image(systemName: event.symbol)
.resizable() .resizable()
.scaledToFit() .scaledToFit()
.frame(width: 20, height: 20) .frame(width: 20, height: 20)
.foregroundStyle(event.color.color) .foregroundStyle(
event.color.color.opacity(
event.complete ? 0.5 : 1
)
)
.animation(.spring, value: event.complete)
Text("\(event.name)") Text("\(event.name)")
.font(.headline) .font(.headline)
.strikethrough(event.complete)
// .foregroundStyle(
// event.complete ? .gray : .primary
// )
.animation(.spring, value: event.complete)
} }
if !event.description.isEmpty { if !event.description.isEmpty {
Text(event.description) Text(event.description)
@@ -195,18 +215,63 @@ struct EventListView: View {
) )
) )
.font(.subheadline) .font(.subheadline)
.foregroundColor(event.color.color) .foregroundStyle(
event.color.color.opacity(
event.complete ? 0.5 : 1
)
)
.animation(.spring, value: event.complete)
if event.recurrence != .none { if event.recurrence != .none {
Text("Recurring: \(event.recurrence.rawValue.capitalized)") Text("Recurs \(event.recurrence.rawValue)")
.font(.subheadline) .font(.subheadline)
.foregroundStyle(
.primary.opacity(
event.complete ? 0.5 : 1
)
)
.animation(.spring, value: event.complete)
} }
} }
Spacer() Spacer()
Text("\(daysUntilEvent(event.date, short: false))") VStack {
.font(.subheadline) Text("\(daysUntilEvent(event.date, short: false))")
.foregroundColor(event.color.color) .font(.subheadline)
.foregroundStyle(
event.color.color.opacity(
event.complete ? 0.5 : 1
)
)
.animation(.spring, value: event.complete)
}
Button() {
withAnimation(.spring) {
event.complete.toggle()
opaity = 0.5
}
viewModel.saveEvents()
} label: {
if event.complete {
ZStack {
Circle()
.foregroundStyle(.green)
Image(systemName: "checkmark")
.resizable()
.foregroundStyle(.white)
.scaledToFit()
.frame(width: 15)
}
} else {
Image(systemName: "circle")
.resizable()
.scaledToFit()
.foregroundStyle(event.color.color)
}
}
.buttonStyle(.borderless)
.frame(maxWidth: 25, maxHeight: 25)
.animation(.spring, value: event.complete)
} }
} }
} }
@@ -241,3 +306,20 @@ struct SearchHelp: View {
#Preview { #Preview {
ContentView() ContentView()
} }
#Preview("EventListView") {
EventListView(
viewModel: EventViewModel(),
event: Event(
name: "event",
complete: false,
completeDesc: "dofajiof",
symbol: "star",
color: ColorCodable(.orange),
description: "lksdjfakdflkasjlkjl",
date: Date(),
time: true,
recurrence: .daily
)
)
}

View File

@@ -13,6 +13,8 @@ struct EditEventView: View {
@Binding var event: Event @Binding var event: Event
@State private var eventName: String @State private var eventName: String
@State private var eventComplete: Bool
@State private var eventCompleteDesc: String
@State private var eventSymbol: String @State private var eventSymbol: String
@State private var eventColor: Color @State private var eventColor: Color
@State private var eventDescription: String @State private var eventDescription: String
@@ -24,6 +26,8 @@ struct EditEventView: View {
self.viewModel = viewModel self.viewModel = viewModel
_event = event _event = event
_eventName = State(initialValue: event.wrappedValue.name) _eventName = State(initialValue: event.wrappedValue.name)
_eventComplete = State(initialValue: event.wrappedValue.complete)
_eventCompleteDesc = State(initialValue: event.wrappedValue.completeDesc)
_eventSymbol = State(initialValue: event.wrappedValue.symbol) _eventSymbol = State(initialValue: event.wrappedValue.symbol)
_eventColor = State(initialValue: event.wrappedValue.color.color) _eventColor = State(initialValue: event.wrappedValue.color.color)
_eventDescription = State(initialValue: event.wrappedValue.description) _eventDescription = State(initialValue: event.wrappedValue.description)
@@ -32,11 +36,33 @@ struct EditEventView: View {
_eventRecurrence = State(initialValue: event.wrappedValue.recurrence) _eventRecurrence = State(initialValue: event.wrappedValue.recurrence)
} }
fileprivate func saveEdits() {
event.name = eventName
event.symbol = eventSymbol
event.color = ColorCodable(eventColor)
event.description = eventDescription
event.date = eventDate
event.recurrence = eventRecurrence
//if there is an event in vM.events with the id of the event we r editing,
//firstindex - loops through the arr and finds first element where that events id matches editing event's id
if let index = viewModel.events.firstIndex(where: { xEvent in
xEvent.id == event.id
}) {
viewModel.events[index] = event
}
viewModel.saveEvents()
dismiss()
}
var body: some View { var body: some View {
// NavigationStack { // NavigationStack {
AddEventView( AddEventView(
viewModel: viewModel, viewModel: viewModel,
eventName: $eventName, eventName: $eventName,
eventComplete: $eventComplete,
eventCompleteDesc: $eventCompleteDesc,
eventSymbol: $eventSymbol, eventSymbol: $eventSymbol,
eventColor: $eventColor, eventColor: $eventColor,
eventDescription: $eventDescription, eventDescription: $eventDescription,
@@ -49,26 +75,11 @@ struct EditEventView: View {
.toolbar { .toolbar {
ToolbarItem(placement: .topBarTrailing) { ToolbarItem(placement: .topBarTrailing) {
Button() { Button() {
event.name = eventName saveEdits()
event.symbol = eventSymbol
event.color = ColorCodable(eventColor)
event.description = eventDescription
event.date = eventDate
event.recurrence = eventRecurrence
//if there is an event in vM.events with the id of the event we r editing,
//firstindex - loops through the arr and finds first element where that events id matches editing event's id
if let index = viewModel.events.firstIndex(where: { xEvent in
xEvent.id == event.id
}) {
viewModel.events[index] = event
}
viewModel.saveEvents()
dismiss()
} label: { } label: {
Text("Done") Text("Done")
} }
.disabled(eventName == "")
} }
} }
// } // }
@@ -81,6 +92,8 @@ struct EditEventView: View {
event: .constant( event: .constant(
Event( Event(
name: "Birthday", name: "Birthday",
complete: false,
completeDesc: "",
symbol: "gear", symbol: "gear",
color: ColorCodable(.red), color: ColorCodable(.red),
description: "an event", description: "an event",

View File

@@ -22,6 +22,8 @@ import WidgetKit
struct Event: Identifiable, Codable { struct Event: Identifiable, Codable {
var id = UUID() var id = UUID()
var name: String var name: String
var complete: Bool
var completeDesc: String
var symbol: String var symbol: String
var color: ColorCodable var color: ColorCodable
var description: String var description: String
@@ -65,7 +67,7 @@ struct ColorCodable: Codable {
} }
} }
func daysUntilEvent(_ eventDate: Date, short: Bool) -> String { func daysUntilEvent(_ eventDate: Date, short: Bool, sepLines: Bool = false) -> String {
let calendar = Calendar.current let calendar = Calendar.current
let currentDate = Date() let currentDate = Date()
let components = calendar.dateComponents([.day], from: currentDate, to: eventDate) let components = calendar.dateComponents([.day], from: currentDate, to: eventDate)
@@ -74,7 +76,7 @@ func daysUntilEvent(_ eventDate: Date, short: Bool) -> String {
if short { if short {
return "\(days)d" return "\(days)d"
} else { } else {
return "\(-days) day\(-days == 1 ? "" : "s") ago" return "\(-days)\(sepLines ? "\n" : " ")day\(-days == 1 ? "" : "s") ago"
} }
} }
guard days != 0 else { guard days != 0 else {
@@ -83,7 +85,7 @@ func daysUntilEvent(_ eventDate: Date, short: Bool) -> String {
if short { if short {
return "\(days)d" return "\(days)d"
} else { } else {
return "\(days) day\(days == 1 ? "" : "s")" return "\(days)\(sepLines ? "\n" : " ")day\(days == 1 ? "" : "s")"
} }
} }
@@ -156,6 +158,8 @@ class EventViewModel: ObservableObject {
func addEvent( func addEvent(
name: String, name: String,
complete: Bool,
completedDesc: String,
symbol: String, symbol: String,
color: ColorCodable, color: ColorCodable,
description: String, description: String,
@@ -165,6 +169,8 @@ class EventViewModel: ObservableObject {
) { ) {
let newEvent = Event( let newEvent = Event(
name: name, name: name,
complete: complete,
completeDesc: completedDesc,
symbol: symbol, symbol: symbol,
color: color, color: color,
description: description, description: description,

View File

@@ -109,6 +109,10 @@ struct SettingsView: View {
Text("Import events") Text("Import events")
} }
Section("Tip") {
Text("Near Future has Widgets!")
}
Section("Danger Zone") { Section("Danger Zone") {
Button("Delete local data", role: .destructive) { Button("Delete local data", role: .destructive) {
viewModel.dangerClearLocalData() viewModel.dangerClearLocalData()

View File

@@ -50,7 +50,7 @@ struct EventWidgetProvider: TimelineProvider {
struct EventWidgetView: View { struct EventWidgetView: View {
var entry: EventWidgetEntry var entry: EventWidgetEntry
@Environment(\.widgetFamily) var widgetFamily @Environment(\.widgetFamily) var widgetFamily
var showedEvents: Int { var showedEventsNum: Int {
switch widgetFamily { switch widgetFamily {
case .systemSmall: case .systemSmall:
return 3 return 3
@@ -63,74 +63,100 @@ struct EventWidgetView: View {
} }
} }
let bgGradient = LinearGradient(
gradient: Gradient(
colors: [
.black,
.gray.opacity(0.2)
]
),
startPoint: .bottom,
endPoint: .top
)
var body: some View { var body: some View {
let isLarge = widgetFamily == .systemLarge let isLarge = widgetFamily == .systemLarge
let events = entry.events let events = entry.events
VStack { ZStack {
Text("Upcoming Events") bgGradient
.font(.subheadline) .padding(.top, 4)
.padding(.top, -12) .padding(.horizontal, -50)
// .padding(.bottom, -5) .padding(.bottom, -100)
VStack {
ForEach(events.prefix(showedEvents), id: \.id) { event in Text("In the Near Future...")
HStack { .foregroundStyle(.white)
RoundedRectangle(cornerRadius: 5) .font(.caption)
.frame(width: 5) .bold()
.frame(maxHeight: isLarge ? 50 : 30) .padding(.top, -12)
.foregroundStyle(event.color.color)
.padding(.leading, -18) ForEach(events.prefix(showedEventsNum), id: \.id) { event in
.padding(.vertical, 2) if !event.complete {
VStack(alignment: .leading) {
HStack { HStack {
Image(systemName: event.symbol) RoundedRectangle(cornerRadius: 5)
.resizable() .frame(width: 5)
.scaledToFit() .frame(maxHeight: isLarge ? 50 : 30)
.frame(width: 15, height: 15)
.foregroundStyle(event.color.color) .foregroundStyle(event.color.color)
Text("\(event.name)") .padding(.leading, -18)
.font(.footnote) .padding(.vertical, 2)
.padding(.leading, -5) VStack(alignment: .leading) {
} HStack {
Image(systemName: event.symbol)
if isLarge { .resizable()
if !event.description.isEmpty { .scaledToFit()
Text(event.description) .frame(width: 15, height: 15)
.font(.caption2) .foregroundStyle(event.color.color)
.foregroundColor(.gray) Text("\(event.name)")
.padding(.top, -5) .foregroundStyle(.white)
.font(.footnote)
.padding(.leading, -5)
}
if isLarge {
if !event.description.isEmpty {
Text(event.description)
.font(.caption2)
.foregroundColor(.gray)
.padding(.top, -5)
}
Text(event.date.formatted(date: .long, time: .omitted))
.font(.caption2)
.foregroundColor(event.color.color)
.padding(.top, -5)
}
if event.recurrence != .none {
Text("\(event.recurrence.rawValue.capitalized)")
.foregroundStyle(.white)
.font(.caption2)
.padding(.top, -5)
}
} }
Text(event.date.formatted(date: .long, time: .omitted)) .padding(.leading, -15)
.font(.caption2)
Spacer()
//short days till if not large widget
Text(daysUntilEvent(event.date, short: !isLarge, sepLines: true))
.font(.caption)
.multilineTextAlignment(.trailing)
.foregroundColor(event.color.color) .foregroundColor(event.color.color)
.padding(.top, -5) .padding(.trailing, -12)
}
if event.recurrence != .none {
Text("\(event.recurrence.rawValue.capitalized)")
.font(.caption2)
.padding(.top, -5)
} }
} else {
/*@START_MENU_TOKEN@*/EmptyView()/*@END_MENU_TOKEN@*/
} }
.padding(.leading, -15) }
Spacer()
Spacer() if showedEventsNum < events.count {
let xMoreEvents = events.count - showedEventsNum
Text(daysUntilEvent(event.date, short: !isLarge)) Text("+\(xMoreEvents) more event\(xMoreEvents == 1 ? "" : "s")")
.font(.caption) .font(.caption2)
.foregroundColor(event.color.color) // .foregroundStyle(.gray)
.padding(.trailing, -12) .padding(.top, -5)
.padding(.bottom, -15)
} }
} }
Spacer() .containerBackground(Color.widgetBackground, for: .widget)
if showedEvents < events.count {
let xMoreEvents = events.count - showedEvents
Text("+\(xMoreEvents) more event\(xMoreEvents == 1 ? "" : "s")")
.font(.caption2)
.foregroundStyle(.gray)
.padding(.top, -5)
.padding(.bottom, -15)
}
} }
.containerBackground(Color.widgetBackground, for: .widget)
} }
} }
@@ -138,6 +164,8 @@ struct Widget_Previews: PreviewProvider {
static var events = [ static var events = [
Event( Event(
name: "Event Name", name: "Event Name",
complete: false,
completeDesc: "",
symbol: "gear", symbol: "gear",
color: ColorCodable(.blue), color: ColorCodable(.blue),
description: "Event description", description: "Event description",
@@ -146,36 +174,33 @@ struct Widget_Previews: PreviewProvider {
recurrence: .yearly recurrence: .yearly
), ),
Event( Event(
name: "A Day", name: "distant past",
complete: false,
completeDesc: "",
symbol: "star", symbol: "star",
color: ColorCodable(.orange), color: ColorCodable(.orange),
description: "description", description: "description",
date: Date.distantPast,
time: false,
recurrence: .daily
),
Event(
name: "event",
complete: false,
completeDesc: "",
symbol: "star",
color: ColorCodable(.purple),
description: "description",
date: Date(), date: Date(),
time: false, time: false,
recurrence: .daily recurrence: .daily
), ),
Event( Event(
name: "A Day", name: "An event",
complete: false,
completeDesc: "",
symbol: "star", symbol: "star",
color: ColorCodable(.orange), color: ColorCodable(.green),
description: "description",
date: Date(),
time: false,
recurrence: .daily
),
Event(
name: "A Day",
symbol: "star",
color: ColorCodable(.orange),
description: "description",
date: Date(),
time: false,
recurrence: .daily
),
Event(
name: "A Day",
symbol: "star",
color: ColorCodable(.orange),
description: "description", description: "description",
date: Date(), date: Date(),
time: false, time: false,
@@ -183,8 +208,10 @@ struct Widget_Previews: PreviewProvider {
), ),
Event( Event(
name: "time event", name: "time event",
symbol: "", complete: true,
color: ColorCodable(.blue), completeDesc: "",
symbol: "clock",
color: ColorCodable(.brown),
description: "an event with a time", description: "an event with a time",
date: Date(), date: Date(),
time: true, time: true,