mirror of
https://github.com/bitwarden/ios.git
synced 2025-12-11 04:34:55 -06:00
100 lines
3.7 KiB
Swift
100 lines
3.7 KiB
Swift
import ClockKit
|
|
|
|
class ComplicationController: NSObject, CLKComplicationDataSource {
|
|
// MARK: - Complication Configuration
|
|
|
|
func getComplicationDescriptors(handler: @escaping ([CLKComplicationDescriptor]) -> Void) {
|
|
let descriptors = [
|
|
CLKComplicationDescriptor(
|
|
identifier: "bitwarden-watch-complication",
|
|
displayName: "Bitwarden",
|
|
supportedFamilies: [
|
|
CLKComplicationFamily.circularSmall,
|
|
CLKComplicationFamily.graphicCircular,
|
|
CLKComplicationFamily.graphicCorner,
|
|
CLKComplicationFamily.utilitarianSmall,
|
|
]
|
|
),
|
|
]
|
|
|
|
handler(descriptors)
|
|
}
|
|
|
|
// MARK: - Timeline Configuration
|
|
|
|
func getPrivacyBehavior(
|
|
for _: CLKComplication,
|
|
withHandler handler: @escaping (CLKComplicationPrivacyBehavior) -> Void
|
|
) {
|
|
handler(.showOnLockScreen)
|
|
}
|
|
|
|
// MARK: - Timeline Population
|
|
|
|
func getCurrentTimelineEntry(
|
|
for complication: CLKComplication,
|
|
withHandler handler: @escaping (CLKComplicationTimelineEntry?) -> Void
|
|
) {
|
|
guard let icon = UIImage(named: "ComplicationIcon") else {
|
|
handler(nil)
|
|
return
|
|
}
|
|
let imageProvider = CLKFullColorImageProvider(fullColorImage: icon)
|
|
|
|
switch complication.family {
|
|
case .circularSmall:
|
|
let template = CLKComplicationTemplateCircularSmallSimpleImage(
|
|
imageProvider: CLKImageProvider(onePieceImage: icon)
|
|
)
|
|
handler(CLKComplicationTimelineEntry(date: .now, complicationTemplate: template))
|
|
case .graphicCircular:
|
|
let template = CLKComplicationTemplateGraphicCircularImage(imageProvider: imageProvider)
|
|
handler(CLKComplicationTimelineEntry(date: .now, complicationTemplate: template))
|
|
case .graphicCorner:
|
|
let template = CLKComplicationTemplateGraphicCornerCircularImage(imageProvider: imageProvider)
|
|
handler(CLKComplicationTimelineEntry(date: .now, complicationTemplate: template))
|
|
case .utilitarianSmall:
|
|
let template = CLKComplicationTemplateUtilitarianSmallSquare(
|
|
imageProvider: CLKImageProvider(onePieceImage: icon)
|
|
)
|
|
handler(CLKComplicationTimelineEntry(date: .now, complicationTemplate: template))
|
|
default:
|
|
handler(nil)
|
|
}
|
|
}
|
|
|
|
// MARK: - Sample Templates
|
|
|
|
func getLocalizableSampleTemplate(
|
|
for complication: CLKComplication,
|
|
withHandler handler: @escaping (CLKComplicationTemplate?) -> Void
|
|
) {
|
|
guard let icon = UIImage(named: "ComplicationIcon") else {
|
|
handler(nil)
|
|
return
|
|
}
|
|
let imageProvider = CLKFullColorImageProvider(fullColorImage: icon)
|
|
|
|
switch complication.family {
|
|
case .circularSmall:
|
|
let template = CLKComplicationTemplateCircularSmallSimpleImage(
|
|
imageProvider: CLKImageProvider(onePieceImage: icon)
|
|
)
|
|
handler(template)
|
|
case .graphicCircular:
|
|
let template = CLKComplicationTemplateGraphicCircularImage(imageProvider: imageProvider)
|
|
handler(template)
|
|
case .graphicCorner:
|
|
let template = CLKComplicationTemplateGraphicCornerCircularImage(imageProvider: imageProvider)
|
|
handler(template)
|
|
case .utilitarianSmall:
|
|
let template = CLKComplicationTemplateUtilitarianSmallSquare(
|
|
imageProvider: CLKImageProvider(onePieceImage: icon)
|
|
)
|
|
handler(template)
|
|
default:
|
|
handler(nil)
|
|
}
|
|
}
|
|
}
|