/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠCl iff ord ĠLi u Ċ Ġ* Ċ Ġ* Ġ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 Ġcom . mad ness . collision . unit . api _ view ing . main Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Filter Ċ import Ġandroid . widget . PopupMenu Ċ import Ġandroidx . activity . On Back Pressed Callback Ċ import Ġandroidx . activity . result . contract . Activity Result Contracts Ċ import Ġandroidx . appcompat . widget . Search View Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ import Ġandroidx . core . content . edit Ċ import Ġandroidx . fragment . app . Fragment Activity Ċ import Ġandroidx . fragment . app . activity ViewModels Ċ import Ġandroidx . lifecycle . Lifecycle Owner Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġandroidx . swiper ef resh layout . widget . Swipe Refresh Layout Ċ import Ġcom . mad ness . collision . main . Main ViewModel Ċ import Ġcom . mad ness . collision . unit . api _ view ing .* Ċ import Ġcom . mad ness . collision . unit . api _ view ing . data . Easy Access Ċ import Ġcom . mad ness . collision . unit . api _ view ing . databinding . Fragment Api Binding Ċ import Ġcom . mad ness . collision . unit . api _ view ing . device . Device Api Ċ import Ġcom . mad ness . collision . unit . api _ view ing . list . API Adapter Ċ import Ġcom . mad ness . collision . unit . api _ view ing . list . App List Fragment Ċ import Ġcom . mad ness . collision . unit . api _ view ing . util . Pref Util Ċ import Ġcom . mad ness . collision . util . Collision Dialog Ċ import Ġcom . mad ness . collision . util . File Pop Ċ import Ġcom . mad ness . collision . util . System Util Ċ import Ġcom . mad ness . collision . util . notify Ċ import Ġcom . mad ness . collision . util . os . Os Utils Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġcom . mad ness . collision . R Ġas ĠMain R Ċ Ċ internal Ġclass ĠMain Toolbar ( ĊĠĠĠ Ġprivate Ġval Ġhost : ĠMy Unit , ĊĠĠĠ Ġ// Ġexternal Ġdata Ġdependencies ĊĠĠĠ Ġprivate Ġval Ġdata Config : ĠMain Data Config , ĊĠĠĠ Ġprivate Ġval Ġpref Settings : ĠSharedPreferences , Ċ ) Ġ: ĠLifecycle Owner Ġby Ġhost Ġ{ ĊĠĠĠ Ġprivate Ġval Ġactivity : ĠFragment Activity ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġhost . activity ĊĠĠĠ Ġprivate Ġval Ġmain ViewModel : ĠMain ViewModel Ġby Ġhost . activity ViewModels () ĊĊĠĠĠ Ġ// Ġexternal Ġcontext Ġdependencies ĊĠĠĠ Ġlateinit Ġvar Ġcontext : ĠContext ĊĠĠĠ Ġlateinit Ġvar Ġview Binding : ĠFragment Api Binding ĊĠĠĠ Ġlateinit Ġvar ĠviewModel : ĠApi View ing ViewModel Ġ Ġ// ĠAndroid ViewModel ĊĠĠĠ Ġlateinit Ġvar Ġlist Fragment : ĠApp List Fragment ĊĊĠĠĠ Ġprivate Ġvar Ġsort Item : ĠInt Ġby Ġdata Config :: sort Item ĊĠĠĠ Ġprivate Ġval Ġsettings Preferences : ĠSharedPreferences Ġby Ġ:: pref Settings ĊĠĠĠ Ġprivate Ġval Ġrefresh Layout : ĠSw ipe Refresh Layout ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġview Binding . api Swipe Refresh ĊĠĠĠ Ġprivate Ġval Ġadapter : ĠAPI Adapter ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġlist Fragment . get Adapter () ĊĊĠĠĠ Ġ// Ġinternal ĊĠĠĠ Ġprivate Ġval Ġservice Ġ= ĠApp Main Service () ĊĠĠĠ Ġprivate Ġvar Ġsearch Back Pressed Callback : ĠOn Back Pressed Callback ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġpop Sort : ĠPopup Menu ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtoolbar : ĠToolbar ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġr Sort : ĠRunnable Sort ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠRunnable Sort ( var Ġposition : ĠInt ) Ġ: ĠRunnable Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . set Sort Method ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsettings Preferences . edit Ġ{ Ġput Int ( Pref Util . AV _ SORT _ ITEM , Ġposition ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . sort Apps ( sort Item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhost . refresh List () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsetup Sort Runnable () Ġ{ ĊĠĠĠĠĠĠĠ Ġr Sort Ġ= ĠRunnable Sort ( sort Item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Sort Popup () Ġ{ ĊĠĠĠĠĠĠĠ Ġpop Sort Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Options ( context : ĠContext , Ġtoolbar : ĠToolbar ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtoolbar . setTitle ( Main R . string . api Viewer ) ĊĠĠĠĠĠĠĠ Ġthis . toolbar Ġ= Ġtoolbar ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġstorage Permission Launcher Ġ= Ġhost . register For Activity Result ( ĊĠĠĠĠĠĠĠ ĠActivity Result Contracts . Request Permission ()) Ġ{ Ġgranted Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( gr anted . not ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh Layout . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhost . notify ( com . mad ness . collision . R . string . toast _ permission _ storage _ den ied ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ register For Activity Result ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġhost . reload List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠFilter . filter By ( constraint : ĠCharSequence ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfilter ( constraint ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhost . do List Update After math () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh Layout . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġselect Option ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen ( item . itemId ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . api TB Refresh Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh Layout . is Refresh ing Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( host . need Permission Ġ{ Ġstorage Permission Launcher . launch ( it ) Ġ}) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhost . reload List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . api TB Search Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsearch View Ġ= Ġitem . action View Ġas ĠSearch View ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch View . query Hint Ġ= Ġcontext . getText ( Main R . string . sdk _ search _ hint ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfilter Ġ= Ġlist Fragment . filter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch View . setOn Query Text Listener ( object Ġ: ĠSearch View . On Query Text Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġvar Ġs O ri : ĠString Ġ= Ġ"" ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Query Text Submit ( query : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwindow Ġ= Ġactivity ?. window Ġ?: Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem Util . hide I me Compat ( context , Ġsearch View , Ġwindow ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch View . clear Focus () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Query Text Change ( new Text : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs A ft : ĠString Ġ= Ġnew Text ?. replace (" Ġ", Ġ"") Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( s O ri . compareTo ( s A ft , Ġtrue ) Ġ== Ġ 0 ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh Layout . is Refresh ing Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( s A ft . isEmpty ()) Ġlifecycle Scope . launch ( Dispatch ers . Default ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhost . refresh List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilter . on Cancel () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilter . is Addition Ġ= Ġs O ri . isEmpty () Ġ|| Ġs A ft . startsWith ( s O ri ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilter . filter By ( s A ft ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs O ri Ġ= Ġs A ft ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġensure Search Action Collapse ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . api TB Sort Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pop Sort Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġwhen Ġin Ġoverflow Ġmenu , Ġmenu Ġitem Ġhas Ġno Ġicon Ġbutton ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthus Ġanchor Ġwould Ġbe Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanchor Ġ= Ġtoolbar . findViewById < View >( R . id . api TB Sort ) Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpop Sort Ġ= ĠPopup Menu ( context , Ġanchor ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Os Utils . satisf y ( Os Utils . Q )) Ġset Force Show Icon ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinf late ( R . menu . api _ sort ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset On MenuItem ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclick Sort Item ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . getItem ( sort Item ). isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpop Sort !!. show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . api TB Settings Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsettings Ġ= ĠMy Bridge . get Settings () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain ViewModel . display Fragment ( settings ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . api TB Manual Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCollision Dialog . alert ( context , ĠR . string . av Manual ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . api TB View ing Target Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEasy Access . is View ing Target Ġ= Ġ! Easy Access . is View ing Target ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsettings Preferences . edit Ġ{ Ġput Boolean ( Pref Util . AV _ VIEW ING _ TARGET , ĠEasy Access . is View ing Target ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . av Main Tb Share Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Scope . launch ( Dispatch ers . Default ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexport List ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . av Main Tb Device Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDevice Api (). show ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġexport List ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġservice . export List ( context , Ġadapter . apps ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġlabel Ġ= Ġ" App ĠList " ĊĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile Pop . by ( context , Ġfile , Ġ" text / csv ", ĠMain R . string . file Actions Share , Ġimage Label Ġ= Ġlabel ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show ( host . child FragmentManager , ĠFile Pop . TAG ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġensure Search Action Collapse ( menuItem : ĠMenuItem ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġactivity Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġ// Ġaction Ġview Ġis Ġnot Ġexpanded Ġfor Ġthe Ġtime Ġbeing , Ġmake Ġit Ġin Ġa Ġlistener ĊĠĠĠĠĠĠĠ Ġmenu Item . setOn Action Expand Listener ( object Ġ: ĠMenuItem . On Action Expand Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon MenuItem Action Expand ( item : ĠMenuItem ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Ġ?: Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Back Pressed Callback ?. remove () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Back Pressed Callback Ġ= Ġobject Ġ: ĠOn Back Pressed Callback ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhandle On Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item . is Action View Expanded ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . collapse Action View () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. also Ġ{ Ġactivity . on Back Pressed Dispatcher . add Callback ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon MenuItem Action Collapse ( item : ĠMenuItem ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Ġ?: Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove Search Back Callback () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġclick Sort Item ( item : ĠMenuItem ): ĠBoolean Ġ Ġ{ ĊĠĠĠĠĠĠĠ Ġrefresh Layout . is Refresh ing Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġsort Item Ġ= Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu Api Sort API L Ġ-> ĠMy Unit . SORT _ POSITION _ API _ LOW ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu Api Sort API H Ġ-> ĠMy Unit . SORT _ POSITION _ API _ HIGH ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu Api Sort AP IN ame Ġ-> ĠMy Unit . SORT _ POSITION _ API _ NAME ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu Api Sort AP IT ime Ġ-> ĠMy Unit . SORT _ POSITION _ API _ TIME ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsort Item ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġitem . isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ// Ġclear Ġtag Ġfilter ĊĠĠĠĠĠĠĠ Ġhost . clear Tag Filter ( context ) ĊĠĠĠĠĠĠĠ Ġr Sort . position Ġ= Ġsort Item ĊĠĠĠĠĠĠĠ ĠApi Task Manager . join ( task Ġ= Ġr Sort ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Search Back Callback () Ġ{ ĊĠĠĠĠĠĠĠ Ġsearch Back Pressed Callback ?. remove () ĊĠĠĠĠĠĠĠ Ġsearch Back Pressed Callback Ġ= Ġnull ĊĠĠĠ Ġ} Ċ } Ċ