package Ġorg . b lay boy . new pipe . local . subscription . dialog Ċ Ċ import Ġandroid . app . Dialog Ċ import Ġandroid . content . res . Color State List Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Parcelable Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . input method . Input Method Manager Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . core . content . getSystem Service Ċ import Ġandroidx . core . os . bundle Of Ċ import Ġandroidx . core . view . is G one Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . core . widget . ImageView Compat Ċ import Ġandroidx . core . widget . do On TextChanged Ċ import Ġandroidx . fragment . app . Dialog Fragment Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . x wr ay . group ie . Group Adapter Ċ import Ġcom . x wr ay . group ie . Group ie ViewHolder Ċ import Ġcom . x wr ay . group ie . On ItemClickListener Ċ import Ġcom . x wr ay . group ie . Section Ċ import Ġice pick . Ice pick Ċ import Ġice pick . State Ċ import Ġorg . b lay boy . new pipe . R Ċ import Ġorg . b lay boy . new pipe . database . feed . model . Feed Group Entity Ċ import Ġorg . b lay boy . new pipe . databinding . Dialog Feed Group Create Binding Ċ import Ġorg . b lay boy . new pipe . databinding . Toolbar Search Layout Binding Ċ import Ġorg . b lay boy . new pipe . fragments . Back Press able Ċ import Ġorg . b lay boy . new pipe . local . subscription . Feed Group Icon Ċ import Ġorg . b lay boy . new pipe . local . subscription . dialog . Feed Group Dialog . Screen State . Delete Screen Ċ import Ġorg . b lay boy . new pipe . local . subscription . dialog . Feed Group Dialog . Screen State . Icon Picker Screen Ċ import Ġorg . b lay boy . new pipe . local . subscription . dialog . Feed Group Dialog . Screen State . Initial Screen Ċ import Ġorg . b lay boy . new pipe . local . subscription . dialog . Feed Group Dialog . Screen State . Subscriptions Picker Screen Ċ import Ġorg . b lay boy . new pipe . local . subscription . dialog . Feed Group Dialog ViewModel . Dialog Event . Processing Event Ċ import Ġorg . b lay boy . new pipe . local . subscription . dialog . Feed Group Dialog ViewModel . Dialog Event . Success Event Ċ import Ġorg . b lay boy . new pipe . local . subscription . item . Empty Placeholder Item Ċ import Ġorg . b lay boy . new pipe . local . subscription . item . Picker Icon Item Ċ import Ġorg . b lay boy . new pipe . local . subscription . item . Picker Subscription Item Ċ import Ġorg . b lay boy . new pipe . util . Device Utils Ċ import Ġorg . b lay boy . new pipe . util . Theme Helper Ċ import Ġjava . io . Serializable Ċ Ċ class ĠFeed Group Dialog Ġ: ĠDialog Fragment (), ĠBack Press able Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġ_ feed Group Create Binding : ĠDialog Feed Group Create Binding ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġfeed Group Create Binding Ġget () Ġ= Ġ_ feed Group Create Binding !! ĊĊĠĠĠ Ġprivate Ġvar Ġ_ search Layout Binding : ĠToolbar Search Layout Binding ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġsearch Layout Binding Ġget () Ġ= Ġ_ search Layout Binding !! ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠFeed Group Dialog ViewModel ĊĠĠĠ Ġprivate Ġvar ĠgroupId : ĠLong Ġ= ĠNO _ GROUP _ SELECTED ĊĠĠĠ Ġprivate Ġvar Ġgroup Icon : ĠFeed Group Icon ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġgroup SortOrder : ĠLong Ġ= Ġ- 1 ĊĊĠĠĠ Ġsealed Ġclass ĠScreen State Ġ: ĠSerializable Ġ{ ĊĠĠĠĠĠĠĠ Ġobject ĠInitial Screen Ġ: ĠScreen State () ĊĠĠĠĠĠĠĠ Ġobject ĠIcon Picker Screen Ġ: ĠScreen State () ĊĠĠĠĠĠĠĠ Ġobject ĠSub scriptions Picker Screen Ġ: ĠScreen State () ĊĠĠĠĠĠĠĠ Ġobject ĠDelete Screen Ġ: ĠScreen State () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ State Ġ@ Jvm Field Ġvar Ġselected Icon : ĠFeed Group Icon ? Ġ= Ġnull ĊĠĠĠ Ġ@ State Ġ@ Jvm Field Ġvar Ġselected Subscriptions : ĠHashSet < Long > Ġ= ĠHashSet () ĊĠĠĠ Ġ@ State Ġ@ Jvm Field Ġvar Ġwas Subscription Selection Changed : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġ@ State Ġ@ Jvm Field Ġvar Ġcurrent Screen : ĠScreen State Ġ= ĠInitial Screen ĊĊĠĠĠ Ġ@ State Ġ@ Jvm Field Ġvar Ġsubscriptions List State : ĠParcel able ? Ġ= Ġnull ĊĠĠĠ Ġ@ State Ġ@ Jvm Field Ġvar Ġicons List State : ĠParcel able ? Ġ= Ġnull ĊĠĠĠ Ġ@ State Ġ@ Jvm Field Ġvar Ġwas Search Subscriptions Visible Ġ= Ġfalse ĊĠĠĠ Ġ@ State Ġ@ Jvm Field Ġvar Ġsubscriptions Current Search Query Ġ= Ġ"" ĊĠĠĠ Ġ@ State Ġ@ Jvm Field Ġvar Ġsubscriptions Show Only Un grouped Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġval Ġsubscription Main Section Ġ= ĠSection () ĊĠĠĠ Ġprivate Ġval Ġsubscription Empty Footer Ġ= ĠSection () ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsubscription Group Adapter : ĠGroup Adapter < Group ie ViewHolder > ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠI ce pick . restore InstanceState ( this , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġset Style ( STYLE _ NO _ TITLE , ĠTheme Helper . getMin Width Dialog Theme ( require Context ())) ĊĠĠĠĠĠĠĠ ĠgroupId Ġ= Ġarguments ?. getLong ( KEY _ GROUP _ ID , ĠNO _ GROUP _ SELECTED ) Ġ?: ĠNO _ GROUP _ SELECTED ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . dialog _ feed _ group _ create , Ġcontainer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Dialog ( savedInstanceState : ĠBundle ?): ĠDialog Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠDialog ( require Activity (), Ġtheme ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! this @ Feed Group Dialog . on Back Pressed ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĊĠĠĠĠĠĠĠ Ġwas Search Subscriptions Visible Ġ= Ġis Search Visible () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Save InstanceState ( out State : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Save InstanceState ( out State ) ĊĊĠĠĠĠĠĠĠ Ġicons List State Ġ= Ġfeed Group Create Binding . icon Selector . layout Manager ?. on Save InstanceState () ĊĠĠĠĠĠĠĠ Ġsubscriptions List State Ġ= Ġfeed Group Create Binding . subscriptions Selector List . layout Manager ?. on Save InstanceState () ĊĊĠĠĠĠĠĠĠ ĠI ce pick . save InstanceState ( this , Ġout State ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġ_ feed Group Create Binding Ġ= ĠDialog Feed Group Create Binding . bind ( view ) ĊĠĠĠĠĠĠĠ Ġ_ search Layout Binding Ġ= Ġfeed Group Create Binding . subscriptions Header Search Container ĊĊĠĠĠĠĠĠĠ Ġif Ġ( android . os . Build . VERSION . SDK _ INT Ġ< Ġandroid . os . Build . VERSION _ CODES . LO L LI POP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠKit K at Ġdoesn 't Ġapply Ġcontainer 's Ġtheme Ġto Ġ< include > Ġcontent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontrast Color Ġ= ĠColor State List . valueOf ( resources . getColor ( R . color . contrast Color )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Layout Binding . toolbar Search EditText . setTextColor ( contrast Color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Layout Binding . toolbar Search EditText . set Hint TextColor ( contrast Color . with Alpha ( 1 2 8 )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠImageView Compat . setImage Tint List ( search Layout Binding . toolbar Search Clear Icon , Ġcontrast Color ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Provider ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFeed Group Dialog ViewModel . Factory ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgroupId , Ġsubscriptions Current Search Query , Ġsubscriptions Show Only Un grouped ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ). get ( Feed Group Dialog ViewModel :: class . java ) ĊĊĠĠĠĠĠĠĠ ĠviewModel . group LiveData . observe ( view Lifecycle Owner , ĠObserver (:: handle Group )) ĊĠĠĠĠĠĠĠ ĠviewModel . subscriptions LiveData . observe ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Lifecycle Owner , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetup Subscription Picker ( it . first , Ġit . second ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠviewModel . dialog Event LiveData . observe ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Lifecycle Owner , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProcessing Event Ġ-> Ġdisable Input () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSuccess Event Ġ-> Ġdismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġsubscription Group Adapter Ġ= ĠGroup Adapter < Group ie ViewHolder >(). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( subscription Main Section ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( subscription Empty Footer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspan Count Ġ= Ġ 4 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfeed Group Create Binding . subscriptions Selector List . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDisable Ġanimations , Ġtoo Ġdist r act ing . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Animator Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġsubscription Group Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠGrid LayoutManager ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), Ġsubscription Group Adapter . span Count , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRecyclerView . VERTICAL , Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspan Size Lookup Ġ= Ġsubscription Group Adapter . span Size Lookup ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsetup Icon Picker () ĊĠĠĠĠĠĠĠ Ġsetup Listeners () ĊĊĠĠĠĠĠĠĠ Ġshow Screen ( current Screen ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( current Screen Ġ== ĠSub scriptions Picker Screen Ġ&& Ġwas Search Subscriptions Visible ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Search () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( current Screen Ġ== ĠInitial Screen Ġ&& ĠgroupId Ġ== ĠNO _ GROUP _ SELECTED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Keyboard () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ Ġfeed Group Create Binding . subscriptions Selector List . adapter Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġfeed Group Create Binding . icon Selector . adapter Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ_ feed Group Create Binding Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ_ search Layout Binding Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* / âĢĭ ////////////////////////////////////////////////////////////////////////// ĊĠĠĠ Ġ// ĠSetup ĊĠĠĠ Ġ// âĢĭ //////////////////////////////////////////////////////////////////////// Ġ*/ ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( current Screen Ġis ĠSub scriptions Picker Screen Ġ&& Ġis Search Visible ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Search () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( current Screen Ġ! is ĠInitial Screen ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Screen ( Initial Screen ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Listeners () Ġ{ ĊĠĠĠĠĠĠĠ Ġfeed Group Create Binding . delete Button . setOnClickListener Ġ{ Ġshow Screen ( Delete Screen ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġfeed Group Create Binding . cancel Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( current Screen ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInitial Screen Ġ-> Ġdismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġshow Screen ( Initial Screen ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfeed Group Create Binding . groupName Input Container . error Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġfeed Group Create Binding . groupName Input . do On TextChanged Ġ{ Ġtext , Ġ_, Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( feed Group Create Binding . groupName Input Container . isError Enabled Ġ&& Ġ! text . isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfeed Group Create Binding . groupName Input Container . error Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfeed Group Create Binding . confirm Button . setOnClickListener Ġ{ Ġhandle Positive Button () Ġ} ĊĊĠĠĠĠĠĠĠ Ġfeed Group Create Binding . select Channel Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeed Group Create Binding . subscriptions Selector List . scrollTo Position ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Screen ( Subscriptions Picker Screen ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġheader Menu Ġ= Ġfeed Group Create Binding . subscriptions Header Toolbar . menu ĊĠĠĠĠĠĠĠ Ġrequire Activity (). menu Inflater . inflate ( R . menu . menu _ feed _ group _ dialog , Ġheader Menu ) ĊĊĠĠĠĠĠĠĠ Ġheader Menu . find Item ( R . id . action _ search ). setOn MenuItem ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Search () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġheader Menu . find Item ( R . id . feed _ group _ toggle _ show _ only _ un grouped _ subscriptions ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Checked Ġ= Ġsubscriptions Show Only Un grouped ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset On MenuItem ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsubscriptions Show Only Un grouped Ġ= Ġ! subscriptions Show Only Un grouped ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . isChecked Ġ= Ġsubscriptions Show Only Un grouped ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . toggle Show Only Un grouped ( subscriptions Show Only Un grouped ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsearch Layout Binding . toolbar Search Clear . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( search Layout Binding . toolbar Search EditText . text . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Search () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreset Search () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Keyboard Search () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsearch Layout Binding . toolbar Search EditText . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Device Utils . is Tv ( context )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Keyboard Search () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsearch Layout Binding . toolbar Search EditText . do On TextChanged Ġ{ Ġ_, Ġ_, Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Query : ĠString Ġ= Ġsearch Layout Binding . toolbar Search EditText . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubscriptions Current Search Query Ġ= Ġnew Query ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . filter Subscriptions By ( new Query ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsubscription Group Adapter . setOn ItemClickListener ( subscription Picker Item Listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Positive Button () Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrent Screen Ġis ĠInitial Screen Ġ-> Ġhandle Positive Button Initial Screen () ĊĠĠĠĠĠĠĠ Ġcurrent Screen Ġis ĠDelete Screen Ġ-> ĠviewModel . delete Group () ĊĠĠĠĠĠĠĠ Ġcurrent Screen Ġis ĠSub scriptions Picker Screen Ġ&& Ġis Search Visible () Ġ-> Ġhide Search () ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġshow Screen ( Initial Screen ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Positive Button Initial Screen () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġfeed Group Create Binding . groupName Input . text . toString (). trim () ĊĠĠĠĠĠĠĠ Ġval Ġicon Ġ= Ġselected Icon Ġ?: Ġgroup Icon Ġ?: ĠFeed Group Icon . ALL ĊĊĠĠĠĠĠĠĠ Ġif Ġ( name . isBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeed Group Create Binding . groupName Input Container . error Ġ= ĠgetString ( R . string . feed _ group _ dialog _ empty _ name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeed Group Create Binding . groupName Input . text Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeed Group Create Binding . groupName Input . request Focus () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeed Group Create Binding . groupName Input Container . error Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( selected Subscriptions . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( require Context (), ĠgetString ( R . string . feed _ group _ dialog _ empty _ selection ), ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( groupId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNO _ GROUP _ SELECTED Ġ-> ĠviewModel . create Group ( name , Ġicon , Ġselected Subscriptions ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠviewModel . update Group ( name , Ġicon , Ġselected Subscriptions , Ġgroup SortOrder ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Group ( feed Group Entity : ĠFeed Group Entity ? Ġ= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġicon Ġ= Ġfeed Group Entity ?. icon Ġ?: ĠFeed Group Icon . ALL ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġfeed Group Entity ?. name Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġgroup Icon Ġ= Ġfeed Group Entity ?. icon ĊĠĠĠĠĠĠĠ Ġgroup SortOrder Ġ= Ġfeed Group Entity ?. sort Order Ġ?: Ġ- 1 ĊĊĠĠĠĠĠĠĠ Ġval Ġfeed Group Icon Ġ= Ġif Ġ( selected Icon Ġ== Ġnull ) Ġicon Ġelse Ġselected Icon !! ĊĠĠĠĠĠĠĠ Ġfeed Group Create Binding . icon Preview . setImage Resource ( feed Group Icon . get Drawable Res ()) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( feed Group Create Binding . groupName Input . text . isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeed Group Create Binding . groupName Input . setText ( name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġsubscription Picker Item Listener Ġ= ĠOn ItemClickListener Ġ{ Ġitem , Ġview Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( item Ġis ĠP icker Subscription Item ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsubscription Id Ġ= Ġitem . subscription Entity . uid ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwas Subscription Selection Changed Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Selected Ġ= Ġif Ġ( this . selected Subscriptions . contains ( subscriptionId )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . selected Subscriptions . remove ( subscriptionId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . selected Subscriptions . add ( subscriptionId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem . update Selected ( view , Ġis Selected ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Subscription Selected Count () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Subscription Picker ( ĊĠĠĠĠĠĠĠ Ġsubscriptions : ĠList < Picker Subscription Item >, ĊĠĠĠĠĠĠĠ Ġselected Subscriptions : ĠSet < Long > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! was Subscription Selection Changed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . selected Subscriptions . addAll ( selected Subscriptions ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġupdate Subscription Selected Count () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( subscriptions . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubscription Empty Footer . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubscription Empty Footer . add ( Empty Placeholder Item ()) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubscription Empty Footer . clear () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsubscriptions . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . isSelected Ġ= Ġthis @ Feed Group Dialog . selected Subscriptions ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. contains ( it . subscription Entity . uid ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsubscription Main Section . update ( subscriptions , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( subscriptions List State Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeed Group Create Binding . subscriptions Selector List . layout Manager ?. on Restore InstanceState ( subscriptions List State ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubscriptions List State Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeed Group Create Binding . subscriptions Selector List . scrollTo Position ( 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Subscription Selected Count () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġselected Count Ġ= Ġthis . selected Subscriptions . size ĊĠĠĠĠĠĠĠ Ġval Ġselected Count Text Ġ= Ġresources . get Quantity String ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . plurals . feed _ group _ dialog _ selection _ count , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Count , Ġselected Count ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġfeed Group Create Binding . selected Subscription Count View . text Ġ= Ġselected Count Text ĊĠĠĠĠĠĠĠ Ġfeed Group Create Binding . subscriptions Header Info . text Ġ= Ġselected Count Text ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Icon Picker () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgroup Adapter Ġ= ĠGroup Adapter < Group ie ViewHolder >() ĊĠĠĠĠĠĠĠ Ġgroup Adapter . addAll ( Feed Group Icon . values (). map Ġ{ ĠP icker Icon Item ( require Context (), Ġit ) Ġ}) ĊĊĠĠĠĠĠĠĠ Ġfeed Group Create Binding . icon Selector . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠGrid LayoutManager ( require Context (), Ġ 7 , ĠRecyclerView . VERTICAL , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġgroup Adapter ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( icons List State Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager ?. on Restore InstanceState ( icons List State ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicons List State Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġgroup Adapter . setOn ItemClickListener Ġ{ Ġitem , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( item ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠP icker Icon Item Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Icon Ġ= Ġitem . icon ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfeed Group Create Binding . icon Preview . setImage Resource ( item . icon Res ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Screen ( Initial Screen ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfeed Group Create Binding . icon Preview . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeed Group Create Binding . icon Selector . scrollTo Position ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Screen ( Icon Picker Screen ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( groupId Ġ== ĠNO _ GROUP _ SELECTED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġicon Ġ= Ġselected Icon Ġ?: ĠFeed Group Icon . ALL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeed Group Create Binding . icon Preview . setImage Resource ( icon . get Drawable Res ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* / âĢĭ ////////////////////////////////////////////////////////////////////////// ĊĠĠĠ Ġ// ĠScreen ĠSelector ĊĠĠĠ Ġ// âĢĭ //////////////////////////////////////////////////////////////////////// Ġ*/ ĊĊĠĠĠ Ġprivate Ġfun Ġshow Screen ( screen : ĠScreen State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrent Screen Ġ= Ġscreen ĊĊĠĠĠĠĠĠĠ Ġfeed Group Create Binding . options Root . only Visible In ( Initial Screen ) ĊĠĠĠĠĠĠĠ Ġfeed Group Create Binding . icon Selector . only Visible In ( Icon Picker Screen ) ĊĠĠĠĠĠĠĠ Ġfeed Group Create Binding . subscriptions Selector . only Visible In ( Subscriptions Picker Screen ) ĊĠĠĠĠĠĠĠ Ġfeed Group Create Binding . delete Screen Message . only Visible In ( Delete Screen ) ĊĊĠĠĠĠĠĠĠ Ġfeed Group Create Binding . separator . only Visible In ( Subscriptions Picker Screen , ĠIcon Picker Screen ) ĊĠĠĠĠĠĠĠ Ġfeed Group Create Binding . cancel Button . only Visible In ( Initial Screen , ĠDelete Screen ) ĊĊĠĠĠĠĠĠĠ Ġfeed Group Create Binding . confirm Button . setText ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Screen Ġ== ĠInitial Screen Ġ&& ĠgroupId Ġ== ĠNO _ GROUP _ SELECTED Ġ-> ĠR . string . create ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġandroid . R . string . ok ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġfeed Group Create Binding . delete Button . is G one Ġ= Ġcurrent Screen Ġ!= ĠInitial Screen Ġ|| ĠgroupId Ġ== ĠNO _ GROUP _ SELECTED ĊĊĠĠĠĠĠĠĠ Ġhide Keyboard () ĊĠĠĠĠĠĠĠ Ġhide Search () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠView . only Visible In ( var arg Ġscreens : ĠScreen State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis Visible Ġ= Ġcurrent Screen Ġin Ġscreens ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* / âĢĭ ////////////////////////////////////////////////////////////////////////// ĊĠĠĠ Ġ// ĠUtils ĊĠĠĠ Ġ// âĢĭ //////////////////////////////////////////////////////////////////////// Ġ*/ ĊĊĠĠĠ Ġprivate Ġfun Ġis Search Visible () Ġ= Ġ_ search Layout Binding ?. root ?. visibility Ġ== ĠView . VISIBLE ĊĊĠĠĠ Ġprivate Ġfun Ġreset Search () Ġ{ ĊĠĠĠĠĠĠĠ Ġsearch Layout Binding . toolbar Search EditText . setText ("") ĊĠĠĠĠĠĠĠ Ġsubscriptions Current Search Query Ġ= Ġ"" ĊĠĠĠĠĠĠĠ ĠviewModel . clear Subscriptions Filter () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhide Search () Ġ{ ĊĠĠĠĠĠĠĠ Ġreset Search () ĊĠĠĠĠĠĠĠ Ġsearch Layout Binding . root . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġfeed Group Create Binding . subscriptions Header Info Container . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġfeed Group Create Binding . subscriptions Header Toolbar . menu . find Item ( R . id . action _ search ). isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġhide Keyboard Search () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Search () Ġ{ ĊĠĠĠĠĠĠĠ Ġsearch Layout Binding . root . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġfeed Group Create Binding . subscriptions Header Info Container . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġfeed Group Create Binding . subscriptions Header Toolbar . menu . find Item ( R . id . action _ search ). isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġshow Keyboard Search () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġinput Method Manager Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire Activity (). getSystem Service < Input Method Manager >() !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Keyboard Search () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( search Layout Binding . toolbar Search EditText . request Focus ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Method Manager . show Soft Input ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Layout Binding . toolbar Search EditText , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInput Method Manager . SHOW _ IMP LICIT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhide Keyboard Search () Ġ{ ĊĠĠĠĠĠĠĠ Ġinput Method Manager . hide Soft Input From Window ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Layout Binding . toolbar Search EditText . window Token , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInput Method Manager . RESULT _ UN CHANGED _ SHO WN ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġsearch Layout Binding . toolbar Search EditText . clear Focus () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Keyboard () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( feed Group Create Binding . groupName Input . request Focus ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Method Manager . show Soft Input ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfeed Group Create Binding . groupName Input , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInput Method Manager . SHOW _ IMP LICIT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhide Keyboard () Ġ{ ĊĠĠĠĠĠĠĠ Ġinput Method Manager . hide Soft Input From Window ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeed Group Create Binding . groupName Input . window Token , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInput Method Manager . RESULT _ UN CHANGED _ SHO WN ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġfeed Group Create Binding . groupName Input . clear Focus () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdisable Input () Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ feed Group Create Binding ?. delete Button ?. isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ_ feed Group Create Binding ?. confirm Button ?. isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ_ feed Group Create Binding ?. cancel Button ?. isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġis Cancel able Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġhide Keyboard () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ GROUP _ ID Ġ= Ġ" KEY _ GROUP _ ID " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠNO _ GROUP _ SELECTED Ġ= Ġ- 1 L ĊĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( groupId : ĠLong Ġ= ĠNO _ GROUP _ SELECTED ): ĠFeed Group Dialog Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠFeed Group Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . arguments Ġ= Ġbundle Of ( KEY _ GROUP _ ID Ġto ĠgroupId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdialog ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ