@ -65,6 +65,10 @@ struct ContentView<T : AbstractTimer>: View {
var body : some View {
var body : some View {
let columns : [ GridItem ] = self . _columns ( )
let columns : [ GridItem ] = self . _columns ( )
let timers : [ AbstractTimer ] = Array ( self . timers )
Group {
if timers . count > 0 {
GeometryReader { reader in
GeometryReader { reader in
let width : CGFloat = reader . size . width / CGFloat ( columns . count ) - 15.0
let width : CGFloat = reader . size . width / CGFloat ( columns . count ) - 15.0
@ -78,7 +82,7 @@ struct ContentView<T : AbstractTimer>: View {
spacing : itemSpacing
spacing : itemSpacing
) {
) {
ReorderableForEach ( items : Array ( self . timers ) ) { timer in
ReorderableForEach ( items : timers ) { timer in
DialView ( timer : timer , isEditingBinding : self . $ isEditing , frameSize : width , handler : { id in
DialView ( timer : timer , isEditingBinding : self . $ isEditing , frameSize : width , handler : { id in
self . _handleSiriTips ( timerId : id )
self . _handleSiriTips ( timerId : id )
@ -93,11 +97,11 @@ struct ContentView<T : AbstractTimer>: View {
}
}
} . padding ( . horizontal , itemSpacing )
} . padding ( . horizontal , itemSpacing )
// i f ! s e l f . t i p s S h o w n , l e t t i p = P r e f e r e n c e s . t i p T o S h o w {
// i f ! s e l f . t i p s S h o w n , l e t t i p = P r e f e r e n c e s . t i p T o S h o w {
// T i p V i e w ( t i p : t i p ) {
// T i p V i e w ( t i p : t i p ) {
// s e l f . _ h i d e T i p ( t i p )
// s e l f . _ h i d e T i p ( t i p )
// } . p a d d i n g ( )
// } . p a d d i n g ( )
// }
// }
Spacer ( )
Spacer ( )
@ -121,6 +125,10 @@ struct ContentView<T : AbstractTimer>: View {
}
}
}
}
}
}
} else {
Text ( " You'll find your timers here. Start by creating them on the left screen " )
}
}
. navigationTitle ( " Home " )
. navigationTitle ( " Home " )
. alert ( boringContext . error ? . localizedDescription ? ? " missing error " , isPresented : $ boringContext . showDefaultAlert ) {
. alert ( boringContext . error ? . localizedDescription ? ? " missing error " , isPresented : $ boringContext . showDefaultAlert ) {
Button ( " OK " , role : . cancel ) { }
Button ( " OK " , role : . cancel ) { }
@ -133,15 +141,6 @@ struct ContentView<T : AbstractTimer>: View {
// . e n v i r o n m e n t ( \ . m a n a g e d O b j e c t C o n t e x t , v i e w C o n t e x t )
// . e n v i r o n m e n t ( \ . m a n a g e d O b j e c t C o n t e x t , v i e w C o n t e x t )
} )
} )
. toolbar {
. toolbar {
// T o o l b a r I t e m ( p l a c e m e n t : . n a v i g a t i o n B a r T r a i l i n g ) {
// B u t t o n {
// s e l f . b o r i n g C o n t e x t . i s S h o w i n g N e w D a t a = t r u e
// } l a b e l : {
// H S t a c k {
// I m a g e ( s y s t e m N a m e : " p l u s " )
// }
// }
// }
ToolbarItem ( placement : . navigationBarTrailing ) {
ToolbarItem ( placement : . navigationBarTrailing ) {
Button {
Button {
withAnimation {
withAnimation {
@ -154,7 +153,6 @@ struct ContentView<T : AbstractTimer>: View {
}
}
. onAppear {
. onAppear {
self . _askPermissions ( )
self . _askPermissions ( )
// s e l f . s h o w L i v e T i m e r s S h e e t = ! c o n d u c t o r . l i v e T i m e r s . i s E m p t y
}
}
. onOpenURL { url in
. onOpenURL { url in
self . _performActionIfPossible ( url : url )
self . _performActionIfPossible ( url : url )