/* Ċ Ġ* Ġ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 . sample Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . util . Typed Value Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Button Ċ import Ġandroidx . annotation . Restrict To Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . we ar . comp lications . data . Comp lication Data Ċ import Ġandroidx . we ar . watch face . Draw Mode Ċ import Ġandroidx . we ar . watch face . Render Parameters Ċ import Ġandroidx . we ar . watch face . Render Parameters . Highlight Layer Ċ import Ġandroidx . we ar . watch face . style . Watch Face Layer Ċ import Ġandroidx . we ar . widget . Swipe Dismiss Frame Layout Ċ import Ġkotlinx . coroutines . launch Ċ Ċ /** Ċ Ġ* ĠThis Ġfragment Ġlets Ġthe Ġuser Ġselect Ġa Ġnon - background Ġcomp lication Ġto Ġconfigure . Ċ Ġ*/ Ċ internal Ġclass ĠComp lication Config Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠConfig View ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Ġas ĠWatch Face Config Activity ĊĠĠĠĠĠĠĠ Ġ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Swipe able Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Callback ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠSw ipe Dismiss Frame Layout . Callback () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Dis missed ( layout : ĠSw ipe Dismiss Frame Layout ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent FragmentManager . pop Back Stack Immediate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠConfiguration Ġview Ġfor Ġwatch Ġfaces Ġwith Ġmultiple Ġcomp lications . Ċ Ġ* Ċ Ġ* Ġ@ hide Ċ Ġ*/ Ċ @ Restrict To ( Restrict To . Scope . LIBRARY _ GROUP ) Ċ @ SuppressWarnings ( ĊĠĠĠ Ġ" View Constructor ", Ġ// ĠInternal Ġview , Ġnot Ġintended Ġfor Ġuse Ġby Ġtools . ĊĠĠĠ Ġ" Click ableView Accessibility " Ġ// Ġperform Click Ġwould Ġbe Ġambiguous . Ċ ) Ċ internal Ġclass ĠConfig View ( ĊĠĠĠ Ġcontext : ĠContext , ĊĊĠĠĠ Ġprivate Ġval Ġwatch Face Config Activity : ĠWatch Face Config Activity Ċ ) Ġ: ĠSw ipe Dismiss Frame Layout ( context ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" Config View " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpreview Comp lication Data : ĠMap < Int , ĠComp lication Data > ĊĠĠĠ Ġprivate Ġval Ġdraw Rect Ġ= ĠRect () ĊĊĠĠĠ Ġ// ĠOne Ġinvisible Ġbutton Ġper Ġcomp lication . ĊĠĠĠ Ġprivate Ġval Ġcomp lication Buttons Ġ= ĊĠĠĠĠĠĠĠ Ġwatch Face Config Activity . editor Session . comp lications State . map Values Ġ{ Ġstate Entry Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO ( alex cl ar ke ): ĠThis Ġbutton Ġis Ġa ĠRect Ġwhich Ġmakes Ġthe Ġtap Ġanimation Ġlook Ġbad . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( state Entry . value . fixed Comp lication Provider Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! state Entry . value . isEnabled Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Entry . key Ġ== Ġwatch Face Config Activity . editor Session . background Comp lication Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDo Ġnot Ġcreate Ġa Ġbutton Ġfor Ġfixed Ġcomp lications , Ġdisabled Ġcomp lications , Ġor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġbackground Ġcomp lications . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠButton ( context ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠMake Ġthe Ġbutton Ġtransparent Ġunless Ġt apped Ġupon . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Background Resource ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTyped Value (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . theme . resolve Attribute ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . attr . selectable Item Background , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. resourceId ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset OnClickListener Ġ{ Ġon Comp lication Button Clicked ( state Entry . key ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd View ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġwatch Face Config Activity . coroutine Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpreview Comp lication Data Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwatch Face Config Activity . editor Session . get Comp lications Preview Data () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Will Not Draw ( false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Layout ( changed : ĠBoolean , Ġleft : ĠInt , Ġtop : ĠInt , Ġright : ĠInt , Ġbottom : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Layout ( changed , Ġleft , Ġtop , Ġright , Ġbottom ) ĊĠĠĠĠĠĠĠ Ġfor Ġ(( id , Ġview ) Ġin Ġcomp lication Buttons ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrect Ġ= Ġwatch Face Config Activity . editor Session . comp lications State [ id ] !!. bounds ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. layout ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrect . left , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrect . top , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrect . right , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrect . bottom ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Comp lication Button Clicked ( comp lication Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwatch Face Config Activity . coroutine Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchosen Comp lication Provider Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwatch Face Config Activity . fragment Controller . show Comp lication Config ( comp lication Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" show Comp lication Config : Ġ$ chosen Comp lication Provider ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRed raw Ġafter Ġthe Ġcomp lication Ġprovider Ġcho oser Ġhas Ġrun . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Size Changed ( width : ĠInt , Ġheight : ĠInt , Ġold Width : ĠInt , Ġold Height : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdraw Rect . set ( 0 , Ġ 0 , Ġwidth , Ġheight ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġediting Session Ġ= Ġwatch Face Config Activity . editor Session ĊĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= Ġediting Session . render Watch Face To Bitmap ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRender Parameters ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDraw Mode . INTER ACTIVE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWatch Face Layer . ALL _ WATCH _ FACE _ LAY ERS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHighlight Layer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRender Parameters . Highlight ed Element . All Comp lications , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor . RED , Ġ// ĠRed Ġcomp lication Ġhighlight . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor . arg b ( 1 2 8 , Ġ 0 , Ġ 0 , Ġ 0 ) Ġ// ĠDar ken Ġeverything Ġelse . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġediting Session . preview Reference Time Millis , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpreview Comp lication Data ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġcanvas . draw Bitmap ( bitmap , Ġdraw Rect , Ġdraw Rect , Ġnull ) ĊĠĠĠ Ġ} Ċ } Ċ