Improves siri tips for ipad

main
Laurent 3 years ago
parent 4cf0d866e9
commit 685c35ae8f
  1. 43
      LeCountdown/Views/ContentView.swift
  2. 6
      LeCountdown/Views/Reusable/SiriTimerView.swift
  3. 18
      LeCountdown/Views/TimersView.swift

@ -60,7 +60,9 @@ struct ContentView<T : AbstractTimer>: View {
VStack { VStack {
TimersView(isEditing: self.$isEditing) TimersView(isEditing: self.$isEditing, siriHandler: { timer in
self._handleSiriTips(timer: timer)
})
.environment(\.managedObjectContext, viewContext) .environment(\.managedObjectContext, viewContext)
.environmentObject(self.boringContext) .environmentObject(self.boringContext)
@ -74,13 +76,27 @@ struct ContentView<T : AbstractTimer>: View {
Spacer() Spacer()
SiriTimerView(timer: self.boringContext.siriTimer) if UIDevice.isPhoneIdiom {
HStack(alignment: .center) { SiriTimerView(timer: self.boringContext.siriTimer, isVisible: self.$siriTipShown)
VolumeView().padding(12.0)
}.frame(width: 300.0, height: 40.0) HStack(alignment: .center) {
.background(Color(white: 0.9)) VolumeView().padding(12.0)
.cornerRadius(16.0) }.frame(width: 300.0, height: 40.0)
.background(Color(white: 0.9))
.cornerRadius(16.0)
} else {
HStack() {
if self.siriTipShown {
SiriTimerView(timer: self.boringContext.siriTimer, isVisible: self.$siriTipShown)
Spacer()
}
VolumeView().padding(12.0).frame(width: 300.0, height: 40.0)
.background(Color(white: 0.9))
.cornerRadius(16.0)
}.padding(.horizontal)
}
LiveTimerListView() LiveTimerListView()
.environment(\.managedObjectContext, viewContext) .environment(\.managedObjectContext, viewContext)
@ -134,6 +150,19 @@ struct ContentView<T : AbstractTimer>: View {
} }
fileprivate func _handleSiriTips(timer: AbstractTimer) {
let timerId = timer.stringId
if !Preferences.timerSiriTips.contains(timerId) {
self.boringContext.siriTimer = timer
Preferences.timerSiriTips.insert(timerId)
self.siriTipShown = true
} else {
self.boringContext.siriTimer = nil
self.siriTipShown = false
}
}
// MARK: - Business // MARK: - Business
fileprivate func _hideTip(_ tip: Tip) { fileprivate func _hideTip(_ tip: Tip) {

@ -12,11 +12,11 @@ struct SiriTimerView: View {
var timer: AbstractTimer? = nil var timer: AbstractTimer? = nil
@State var isVisible = true var isVisible: Binding<Bool>
var body: some View { var body: some View {
if self.timer != nil { if self.timer != nil {
SiriTipView(intent: self.intent(), isVisible: self.$isVisible) SiriTipView(intent: self.intent(), isVisible: self.isVisible)
.siriTipViewStyle(SiriTipViewStyle.dark).padding() .siriTipViewStyle(SiriTipViewStyle.dark).padding()
} else { } else {
EmptyView() EmptyView()
@ -35,6 +35,6 @@ struct SiriTimerView: View {
struct SiriTimerView_Previews: PreviewProvider { struct SiriTimerView_Previews: PreviewProvider {
static var previews: some View { static var previews: some View {
SiriTimerView() SiriTimerView(isVisible: .constant(true))
} }
} }

@ -15,6 +15,8 @@ struct TimersView: View {
@Binding var isEditing: Bool @Binding var isEditing: Bool
var siriHandler: ((AbstractTimer) -> ())
@FetchRequest( @FetchRequest(
sortDescriptors: [NSSortDescriptor(keyPath: \AbstractTimer.order, ascending: true)], sortDescriptors: [NSSortDescriptor(keyPath: \AbstractTimer.order, ascending: true)],
animation: .default) animation: .default)
@ -42,7 +44,10 @@ struct TimersView: View {
ReorderableForEach(items: abstractTimers) { timer in ReorderableForEach(items: abstractTimers) { timer in
DialView(timer: timer, isEditingBinding: self.$isEditing, frameSize: width, handler: { timer in DialView(timer: timer, isEditingBinding: self.$isEditing, frameSize: width, handler: { timer in
self._handleSiriTips(timer: timer)
self.siriHandler(timer)
// self._handleSiriTips(timer: timer)
}) })
.environment(\.managedObjectContext, viewContext) .environment(\.managedObjectContext, viewContext)
.environmentObject(Conductor.maestro) .environmentObject(Conductor.maestro)
@ -75,15 +80,6 @@ struct TimersView: View {
} }
} }
fileprivate func _handleSiriTips(timer: AbstractTimer) {
let timerId = timer.stringId
if !Preferences.timerSiriTips.contains(timerId) {
self.boringContext.siriTimer = timer
Preferences.timerSiriTips.insert(timerId)
}
}
fileprivate func _columnCount() -> Int { fileprivate func _columnCount() -> Int {
#if os(iOS) #if os(iOS)
if UIDevice.isPhoneIdiom { if UIDevice.isPhoneIdiom {
@ -104,6 +100,6 @@ struct TimersView: View {
struct TimersView_Previews: PreviewProvider { struct TimersView_Previews: PreviewProvider {
static var previews: some View { static var previews: some View {
TimersView(isEditing: .constant(false)) TimersView(isEditing: .constant(false), siriHandler: { _ in })
} }
} }

Loading…
Cancel
Save