package Ġio . github . tak us an 2 3 . f lick widget . widget Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Bitmap Factory Ċ import Ġandroid . widget . Remote Views Ċ import Ġandroid . widget . Remote Views Service Ċ import Ġandroidx . preference . Preference Manager Ċ import Ġio . github . tak us an 2 3 . f lick widget . R Ċ import Ġio . github . tak us an 2 3 . f lick widget . Widget Host Activity Ċ import Ġio . github . tak us an 2 3 . f lick widget . data . F lick Widget Data Ċ import Ġio . github . tak us an 2 3 . f lick widget . repository . F lick Widget Data Repository Ċ import Ġkotlinx . coroutines . run Blocking Ċ Ċ /** Ċ Ġ* ĠStack View ãģ® Adapter ãĢĤ Stack View ãģ« æĥħåł± ãĤĴ è¡¨ç¤º ãģĻãĤĭ ãĤ¯ãĥ©ãĤ¹ Ċ Ġ* Ġ*/ Ċ class ĠF lick Widget Remote View Service Ġ: ĠRemote Views Service () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġon Get View Factory ( intent : ĠIntent ?): ĠRemote Views Factory Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġapplication Context ĊĠĠĠĠĠĠĠ Ġval Ġpref Setting Ġ= ĠPreference Manager . getDefault SharedPreferences ( context ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĠF lick Widget ãģ® Id Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġf lick Widget Id Ġ= Ġintent ?. extras ?. getInt (" widget _ id ") !! ĊĊĠĠĠĠĠĠĠ Ġ/** ĠãĤ ¦ ãĤ¤ ãĤ¸ãĤ§ ãĥĥãĥĪ ãĤĴ çĶ» åĥı ãģ¨ãģĹãģ¦ ä¿ĿåŃĺ éħį åĪĹ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġf lick Widget DataList Ġ= Ġarray ListOf < F lick Widget Data >() ĊĊĠĠĠĠĠĠĠ Ġ/** ĠãĤ ¦ ãĤ¤ ãĤ¸ãĤ§ ãĥĥãĥĪ ãģ® æĥħåł± åıĸå¾Ĺ ãĤ¯ãĥ©ãĤ¹ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġf lick Widget Data Repository Ġ= ĠF lick Widget Data Repository ( application Context ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠRemote Views Factory Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** Ġãĥĩãĥ¼ãĤ¿ åıĸå¾Ĺ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon DataSet Changed () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġãĥ ī ãĤŃãĥ¥ ãĥ¡ãĥ³ãĥĪ ãģ« åĲĮ æľŁ åĩ¦çĲĨ ãģĹãģ¦ãģĦ ãģĦ ãĤĪ ãģ£ãģ¦ è¨Ģ ãĤı ãĤĮ ãģŁ ãģ®ãģ§ ãģĬ è¨Ģ èĳ ī ãģ« çĶ ĺ ãģĪ ãģ¦ åĲĮ æľŁ åĩ¦çĲĨ ãĢĤ çĦ¡ ç¤ ¼ è ¬ Ľ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf lick Widget DataList . addAll ( f lick Widget Data Repository . getF lick Widget Data ( f lick Widget Id )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġf lick Widget DataList . size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** Ġä¸Ģ åĢĭ ä¸Ģ åĢĭ ãģ® ãĥĵ ãĥ¥ ãĥ¼ãĤĴ è¿Ķ ãģĻ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget View At ( position : ĠInt ): ĠRemote Views Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( position Ġ< Ġf lick Widget DataList . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf lick Widget Data Ġ= Ġf lick Widget DataList [ position ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRemote Views ( context . packageName , ĠR . layout . f lick _ widget _ item ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= ĠBitmap Factory . decode File ( f lick Widget Data . widget Capture Image Path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset TextView Text ( R . id . f lick _ widget _ item _ label _ text _ view , Ġf lick Widget Data . widget Label ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset ImageView Bitmap ( R . id . f lick _ widget _ item _ image _ view , Ġbitmap ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ãģĬ ãģĹãģŁ ãĤī ãĤ¦ ãĤ¤ ãĤ¸ãĤ§ ãĥĥãĥĪ è¡¨ç¤º Activity ãĤĴ åĩº ãģĻ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠWidget Host Activity :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra (" widget _ id ", Ġf lick Widget Data . widget Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra (" f lick _ widget _ id ", Ġf lick Widget Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflags Ġ= ĠIntent . FLAG _ ACTIVITY _ NEW _ TASK Ġor ĠIntent . FLAG _ ACTIVITY _ CLEAR _ TASK ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset OnClick Fill In Intent ( R . id . f lick _ widget _ item _ image _ view , Ġintent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĠRemote Views ( context . packageName , ĠR . layout . f lick _ widget _ item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Loading View (): ĠRemote Views ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget ViewType Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem Id ( position : ĠInt ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġposition . to Long () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhas Stable Ids (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }