package Ġch . r my . android . http _ shortcuts . use cases Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġch . r my . android . framework . view model . view state . Dialog State Ċ import Ġch . r my . android . http _ shortcuts . R Ċ import Ġch . r my . android . http _ shortcuts . icons . BuiltIn Icon Adapter Ċ import Ġch . r my . android . http _ shortcuts . icons . Icons Ċ import Ġch . r my . android . http _ shortcuts . icons . Shortcut Icon Ċ import Ġch . r my . android . http _ shortcuts . utils . Grid LayoutManager Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠGet BuiltIn Icon Picker Dialog UseCase Ċ @ Inject Ċ constructor () Ġ{ ĊĊĠĠĠ Ġoperator Ġfun Ġinvoke ( on Icon Selected : Ġ( Shortcut Icon . BuiltIn Icon ) Ġ-> ĠUnit ): ĠDialog State Ġ= ĊĠĠĠĠĠĠĠ ĠDialog State . create ( DIALOG _ ID ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle ( R . string . title _ choose _ icon ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. view ( R . layout . dialog _ icon _ selector ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgrid Ġ= ĠfindViewById < RecyclerView >( R . id . icon _ selector _ grid ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrid . set Has Fixed Size ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlayout Manager Ġ= ĠGrid LayoutManager ( context , ĠR . dim en . grid _ layout _ builtin _ icon _ width ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrid . layout Manager Ġ= Ġlayout Manager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . add On Layout ChangeListener Ġ{ Ġview , Ġ_, Ġ_, Ġ_, Ġ_, Ġ_, Ġ_, Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager . set Total Width ( view . width ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠBuilt In Icon Adapter ( get Icons ( context )) Ġ{ Ġicon Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Icon Selected ( icon ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrid . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Icons ( context : ĠContext ): ĠList < Shortcut Icon . BuiltIn Icon > Ġ= ĊĠĠĠĠĠĠĠ Ġget Normal Icons ( context ). plus ( get Tint ed Icons ( context )) ĊĊĠĠĠ Ġprivate Ġfun Ġget Normal Icons ( context : ĠContext ): ĠList < Shortcut Icon . BuiltIn Icon > Ġ= ĊĠĠĠĠĠĠĠ ĠIcons . ICON S ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠShort cut Icon . BuiltIn Icon . from Drawable Resource ( context , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Tint ed Icons ( context : ĠContext ): ĠList < Shortcut Icon . BuiltIn Icon > Ġ= ĊĠĠĠĠĠĠĠ ĠIcons . Tint Colors . values () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġt int Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcons . T INT ABLE _ ICON S . map Ġ{ Ġicon Resource Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠShort cut Icon . BuiltIn Icon . from Drawable Resource ( context , Ġicon Resource , Ġt int ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDIALOG _ ID Ġ= Ġ" built - in - icon - picker " ĊĠĠĠ Ġ} Ċ } Ċ