SwitchWatch/Switch WatchKit Extension/ComplicationController.swift

77 lines
3.0 KiB
Swift

//
// ComplicationController.swift
// Switch WatchKit Extension
//
// Created by Within on 2019-09-21.
// Copyright © 2019 Within. All rights reserved.
//
import WatchKit
class ComplicationController: NSObject, CLKComplicationDataSource {
func getSupportedTimeTravelDirections(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTimeTravelDirections) -> Void) {
handler([])
}
func getTimelineStartDate(for complication: CLKComplication, withHandler handler: @escaping (Date?) -> Void) {
handler(nil)
}
func getTimelineEndDate(for complication: CLKComplication, withHandler handler: @escaping (Date?) -> Void) {
handler(nil)
}
func getPrivacyBehavior(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationPrivacyBehavior) -> Void) {
handler(.showOnLockScreen)
}
// MARK: - Timeline Population
func getCurrentTimelineEntry(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTimelineEntry?) -> Void) {
NSLog("get current timeline entry")
// Call the handler with the current timeline entry
if (complication.family == .graphicCorner) {
getFront() { front in
handler(self.getEntryForGraphicCorner(front))
}
} else { handler(nil) }
}
func getTimelineEntries(for complication: CLKComplication, before date: Date, limit: Int, withHandler handler: @escaping ([CLKComplicationTimelineEntry]?) -> Void) {
// Call the handler with the timeline entries prior to the given date
handler(nil)
}
func getTimelineEntries(for complication: CLKComplication, after date: Date, limit: Int, withHandler handler: @escaping ([CLKComplicationTimelineEntry]?) -> Void) {
// Call the handler with the timeline entries after to the given date
handler(nil)
}
func getLocalizableSampleTemplate(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTemplate?) -> Void) {
NSLog("get sample template")
// This method will be called once per supported complication, and the results will be cached
if (complication.family == .graphicCorner) {
handler(self.getTemplateForGraphicCorner("Example"))
} else { handler(nil) }
}
func getEntryForGraphicCorner(_ front: String) -> CLKComplicationTimelineEntry {
let gc = getTemplateForGraphicCorner(front)
return CLKComplicationTimelineEntry(date: Date(), complicationTemplate: gc)
}
func getTemplateForGraphicCorner(_ front: String) -> CLKComplicationTemplateGraphicCornerStackText {
let gc = CLKComplicationTemplateGraphicCornerStackText()
let text = CLKSimpleTextProvider()
text.text = front
text.shortText = ""
text.tintColor = UIColor.white
gc.innerTextProvider = text
return gc;
}
}