Improves siri tips for ipad

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

@ -60,7 +60,9 @@ struct ContentView<T : AbstractTimer>: View {
VStack {
TimersView(isEditing: self.$isEditing)
TimersView(isEditing: self.$isEditing, siriHandler: { timer in
self._handleSiriTips(timer: timer)
})
.environment(\.managedObjectContext, viewContext)
.environmentObject(self.boringContext)
@ -74,13 +76,27 @@ struct ContentView<T : AbstractTimer>: View {
Spacer()
SiriTimerView(timer: self.boringContext.siriTimer)
HStack(alignment: .center) {
VolumeView().padding(12.0)
}.frame(width: 300.0, height: 40.0)
.background(Color(white: 0.9))
.cornerRadius(16.0)
if UIDevice.isPhoneIdiom {
SiriTimerView(timer: self.boringContext.siriTimer, isVisible: self.$siriTipShown)
HStack(alignment: .center) {
VolumeView().padding(12.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()
.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
fileprivate func _hideTip(_ tip: Tip) {

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

@ -12,8 +12,10 @@ struct TimersView: View {
@EnvironmentObject var boringContext: BoringContext
@Environment(\.managedObjectContext) private var viewContext
@Binding var isEditing: Bool
var siriHandler: ((AbstractTimer) -> ())
@FetchRequest(
sortDescriptors: [NSSortDescriptor(keyPath: \AbstractTimer.order, ascending: true)],
@ -21,7 +23,7 @@ struct TimersView: View {
private var timers: FetchedResults<AbstractTimer>
fileprivate let itemSpacing: CGFloat = 10.0
var body: some View {
let abstractTimers: [AbstractTimer] = Array(self.timers)
@ -42,7 +44,10 @@ struct TimersView: View {
ReorderableForEach(items: abstractTimers) { 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)
.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 {
#if os(iOS)
if UIDevice.isPhoneIdiom {
@ -104,6 +100,6 @@ struct TimersView: View {
struct TimersView_Previews: PreviewProvider {
static var previews: some View {
TimersView(isEditing: .constant(false))
TimersView(isEditing: .constant(false), siriHandler: { _ in })
}
}

Loading…
Cancel
Save