package Ġio . github . d iov . app locale Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . core . view . forEach Indexed Ċ import Ġandroidx . fragment . app . FragmentManager Ċ import Ġcom . google . android . material . bottom sheet . Bottom Sheet Dialog Fragment Ċ import Ġcom . google . android . material . chip . Chip Ċ import Ġkotlinx . android . synt hetic . main . fragment _ language _ sheet .* Ċ import Ġjava . util . Locale Ċ Ċ /** Ċ Ġ* ĠAnother App Locale Ċ Ġ* Ċ Ġ* ĠCreated Ġby ĠD io _ V Ġon Ġ 2 0 1 9 - 0 9 - 2 0 . Ċ Ġ* ĠCopyright ĠÂ© Ġ 2 0 1 9 Ġd iov . github . io . ĠAll Ġrights Ġreserved . Ċ Ġ*/ Ċ Ċ class ĠLanguage Bottom Sheet Fragment ( private Ġval Ġapp Info : ĠApp Info ) Ġ: ĠBottom Sheet Dialog Fragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġlanguage Selected Callback : ĠLanguage Selected Callback ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ language _ sheet , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġsetup View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup View () Ġ{ ĊĠĠĠĠĠĠĠ Ġlanguage App Icon . setImage Drawable ( Locale App . app . package Manager . getApplication Icon ( app Info . application Info )) ĊĠĠĠĠĠĠĠ Ġlanguage App Title . text Ġ= Ġapp Info . name ĊĊĠĠĠĠĠĠĠ Ġval Ġdefault Index Ġ= Ġlanguage List . indexOf First Ġ{ Ġlocale Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocale . toString () Ġ== Ġapp Info . locale String ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlanguage Group View . forEach Indexed Ġ{ Ġindex , Ġview Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchip Ġ= Ġview Ġas ĠCh ip ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocale Ġ= Ġlanguage List [ index ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġ"${ locale . flag Emoji } Ġ${ locale . to Language Tag () }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchip . text Ġ= Ġtitle ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchip . isChecked Ġ= Ġindex Ġ== Ġdefault Index ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlanguage Group View . setOn Checked ChangeListener Ġ{ Ġ_, Ġchecked Id Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlanguage Ġ= Ġwhen Ġ( checked Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . f rench Chip Ġ-> Ġlanguage List [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . ger man Chip Ġ-> Ġlanguage List [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . ital ian Chip Ġ-> Ġlanguage List [ 2 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . j apanese Chip Ġ-> Ġlanguage List [ 3 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . k orean Chip Ġ-> Ġlanguage List [ 4 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . simpl ified Chinese Chip Ġ-> Ġlanguage List [ 5 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . trad itional Chinese Chip Ġ-> Ġlanguage List [ 6 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . english Chip Ġ-> Ġlanguage List [ 7 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlanguage Selected Callback ?. invoke ( language ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow ( manager : ĠFragment Manager ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . show ( manager , ĠTAG ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Language Selected Callback ( callback : ĠLanguage Selected Callback ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . language Selected Callback Ġ= Ġcallback ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" io . github . d iov . app locale . Language Bottom Sheet Fragment " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlanguage List Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocale . F RAN CE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocale . GER MAN Y , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocale . ITAL Y , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocale . J AP AN , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocale . K ORE A , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocale . PR C , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocale . TA IW AN , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocale . UK ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ type alias ĠLanguage Selected Callback Ġ= Ġ( language : ĠLocale ?) Ġ-> ĠUnit Ċ