/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġandroidx . we ar . watch face . editor Ċ Ċ import Ġandroid . content . Component Name Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . os . Build Ċ import Ġandroidx . activity . Component Activity Ċ import Ġandroidx . annotation . Requires Api Ċ import Ġandroidx . annotation . Ui Thread Ċ import Ġandroidx . concurrent . futures . Res olvable Future Ċ import Ġandroidx . we ar . watch face . comp lications . Comp lication DataSource Info Ċ import Ġandroidx . we ar . watch face . comp lications . data . Comp lication Data Ċ import Ġandroidx . we ar . watch face . Render Parameters Ċ import Ġandroidx . we ar . watch face . client . Comp lication Slot State Ċ import Ġandroidx . we ar . watch face . client . Head less Watch Face Client Ċ import Ġandroidx . we ar . watch face . client . Watch Face Id Ċ import Ġandroidx . we ar . watch face . style . User Style Ċ import Ġandroidx . we ar . watch face . style . User Style Schema Ċ import Ġcom . google . common . util . concurrent . List enable Future Ċ import Ġkotlinx . coroutines . Coroutine Dispatcher Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Timeout Cancellation Exception Ċ import Ġkotlinx . coroutines . flow . Mutable State Flow Ċ import Ġkotlinx . coroutines . flow . State Flow Ċ import Ġkotlinx . coroutines . launch Ċ import Ġjava . time . Instant Ċ import Ġkotlin . coroutines . Coroutine Context Ċ Ċ /** Ċ Ġ* Ġ[ List enable Future ]- based Ġcompatibility Ġwrapper Ġaround Ġ[ Editor Session ]' s Ġsus pending Ġmethods . Ċ Ġ*/ Ċ public Ġclass ĠList enable Editor Session ( ĊĠĠĠ Ġprivate Ġval Ġwrapped Editor Session : ĠEditor Session Ċ ) Ġ: ĠEditor Session Ġ{ ĊĠĠĠ Ġpublic Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠConstructs Ġa Ġ[ List enable Future ] Ġfor Ġa Ġ[ List enable Editor Session ] Ġfor Ġan Ġon Ġwatch Ġface ĊĠĠĠĠĠĠĠĠ Ġ* Ġeditor . ĠThis Ġregisters Ġan Ġactivity Ġresult Ġhandler Ġand Ġso Ġit Ġmust Ġbe Ġcalled Ġduring Ġan ĊĠĠĠĠĠĠĠĠ Ġ* ĠActivity Ġor ĠFragment Ġinitialization Ġpath . ĠThe ĠEditor Session Ġis Ġlifecycle Ġaware Ġand Ġwill ĊĠĠĠĠĠĠĠĠ Ġ* Ġautomatically Ġclose Ġwhen Ġon Destroy Ġis Ġreceived . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġwatch Ġface Ġeditor Ġtakes Ġmore Ġthan Ġ 4 s Ġto Ġcreate Ġa Ġwatch Ġface , Ġreturned Ġfuture Ġwill Ġbe ĊĠĠĠĠĠĠĠĠ Ġ* Ġresolved Ġwith Ġ[ Timeout Cancellation Exception ] Ġexception . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġactivity ĠThe Ġ[ Component Activity ] Ġassociated Ġwith Ġthe ĠEditor Session . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ SuppressWarnings (" Executor Registration ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ Ui Thread ĊĠĠĠĠĠĠĠ Ġpublic Ġfun Ġlist enable Create On Watch Editor Session ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity : ĠComponent Activity ĊĠĠĠĠĠĠĠ Ġ): ĠList enable Future < List enable Editor Session ?> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠRes olvable Future . create < List enable Editor Session ?> () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcoroutine Scope Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCor outine Scope ( object Ġ: ĠCor outine Dispatcher () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdispatch ( context : ĠCor outine Context , Ġblock : ĠRunnable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblock . run () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcoroutine Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . set ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠList enable Editor Session ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEditor Session . create On Watch Editor Session ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . set Exception ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠConstructs Ġan Ġ[ List enable Editor Session ] Ġfor Ġa Ġremote Ġwatch Ġface Ġeditor . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġactivity ĠThe Ġ[ Component Activity ] Ġassociated Ġwith Ġthe ĠEditor Session . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġedit Intent Ġ[ Intent ] Ġsent Ġby ĠSys UI Ġto Ġlaunch Ġthe Ġediting Ġsession . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġhead less Watch Face Client ĠThe Ġ[ Head less Watch Face Client ] Ġthat Ġback s Ġthe Ġconstructed ĊĠĠĠĠĠĠĠĠ Ġ* ĠEditor Session . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ Requires Api ( 2 7 ) ĊĠĠĠĠĠĠĠ Ġ@ Ui Thread ĊĠĠĠĠĠĠĠ Ġpublic Ġfun Ġcreate Head less Editor Session ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity : ĠComponent Activity , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit Intent : ĠIntent , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhead less Watch Face Client : ĠHead less Watch Face Client ĊĠĠĠĠĠĠĠ Ġ): ĠList enable Editor Session Ġ= ĠList enable Editor Session ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEditor Session . create Head less Editor Session ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Intent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhead less Watch Face Client ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Coroutine Scope (): ĠCor outine Scope Ġ= ĊĠĠĠĠĠĠĠ Ġ( wrapped Editor Session Ġas ĠBase Editor Session ). coroutine Scope ĊĊĠĠĠ Ġoverride Ġval Ġwatch Face Component Name : ĠComponent Name Ġ= Ġwrapped Editor Session . watch Face Component Name ĊĊĠĠĠ Ġ@ get : Requires Api ( Build . VERSION _ CODES . R ) ĊĠĠĠ Ġ@ Requires Api ( Build . VERSION _ CODES . R ) ĊĠĠĠ Ġoverride Ġval Ġwatch Face Id : ĠWatch Face Id Ġ= Ġwrapped Editor Session . watch Face Id ĊĊĠĠĠ Ġoverride Ġval Ġuser Style : ĠMutable State Flow < User Style > Ġby Ġwrapped Editor Session :: user Style ĊĊĠĠĠ Ġoverride Ġval Ġpreview Reference Instant : ĠInstant Ġ= Ġwrapped Editor Session . preview Reference Instant ĊĊĠĠĠ Ġoverride Ġval Ġuser Style Schema : ĠUser Style Schema Ġby Ġwrapped Editor Session :: user Style Schema ĊĊĠĠĠ Ġoverride Ġval Ġcomp lication Slots State : ĠState Flow < Map < Int , ĠComp lication Slot State >> Ġby ĊĠĠĠ Ġwrapped Editor Session :: comp lication Slots State ĊĊĠĠĠ Ġoverride Ġval Ġcomp lications Preview Data : ĠState Flow < Map < Int , ĠComp lication Data >> Ġby ĊĠĠĠ Ġwrapped Editor Session :: comp lications Preview Data ĊĊĠĠĠ Ġoverride Ġval Ġcomp lications DataSource Info : ĠState Flow < Map < Int , ĠComp lication DataSource Info ? >> Ġby ĊĠĠĠ Ġwrapped Editor Session :: comp lications DataSource Info ĊĊĠĠĠ Ġ@ Suppress (" IN AP PL IC ABLE _ JVM _ NAME ") ĊĠĠĠ Ġ@ get : Jvm Name (" is Commit Changes On Close ") ĊĠĠĠ Ġoverride Ġvar Ġcommit Changes On Close : ĠBoolean Ġby Ġwrapped Editor Session :: commit Changes On Close ĊĊĠĠĠ Ġ@ get : SuppressWarnings (" Auto Box ing ") ĊĠĠĠ Ġoverride Ġval Ġbackground Comp lication Slot Id : ĠInt ? Ġby ĊĠĠĠ Ġwrapped Editor Session :: background Comp lication Slot Id ĊĊĠĠĠ Ġ@ SuppressWarnings (" Auto Box ing ") ĊĠĠĠ Ġoverride Ġfun Ġget Comp lication Slot Id At ( x : ĠInt , Ġy : ĠInt ): ĠInt ? Ġ= ĊĠĠĠĠĠĠĠ Ġwrapped Editor Session . get Comp lication Slot Id At ( x , Ġy ) ĊĊĠĠĠ Ġoverride Ġfun Ġrender Watch Face To Bitmap ( ĊĠĠĠĠĠĠĠ Ġrender Parameters : ĠRender Parameters , ĊĠĠĠĠĠĠĠ Ġinstant : ĠInstant , ĊĠĠĠĠĠĠĠ Ġslot Id To Comp lication Data : ĠMap < Int , ĠComp lication Data >? ĊĠĠĠ Ġ): ĠBitmap Ġ= Ġwrapped Editor Session . render Watch Face To Bitmap ( ĊĠĠĠĠĠĠĠ Ġrender Parameters , ĊĠĠĠĠĠĠĠ Ġinstant , ĊĠĠĠĠĠĠĠ Ġslot Id To Comp lication Data ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ/** Ġ[ List enable Future ] Ġwrapper Ġaround Ġ[ Editor Session . open Comp lication DataSource Chooser ]. Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġlist enable Open Comp lication DataSource Chooser ( ĊĠĠĠĠĠĠĠ Ġcomp lication Slot Id : ĠInt ĊĠĠĠ Ġ): ĠList enable Future < Ch osen Comp lication DataSource ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfuture Ġ= ĠRes olvable Future . create < Ch osen Comp lication DataSource ?> () ĊĠĠĠĠĠĠĠ Ġget Coroutine Scope (). launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfuture . set ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrapped Editor Session . open Comp lication DataSource Chooser ( comp lication Slot Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfuture . set Exception ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfuture ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġopen Comp lication DataSource Chooser ( comp lication Slot Id : ĠInt ): ĊĠĠĠĠĠĠĠ ĠCh osen Comp lication DataSource ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrapped Editor Session . open Comp lication DataSource Chooser ( comp lication Slot Id ) ĊĊĠĠĠ Ġoverride Ġfun Ġclose () Ġ{ ĊĠĠĠĠĠĠĠ Ġwrapped Editor Session . close () ĊĠĠĠ Ġ} Ċ } Ċ