package Ġcom . fs ck . k 9 . fragment Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Parcelable Ċ import Ġandroid . text . Sp anned Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Adapter View Ċ import Ġandroid . widget . Adapter View . On ItemClickListener Ċ import Ġandroid . widget . Adapter View . On Item Long ClickListener Ċ import Ġandroid . widget . ListView Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . appcompat . view . Action Mode Ċ import Ġandroidx . core . os . bundle Of Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . swiper ef resh layout . widget . Swipe Refresh Layout Ċ import Ġcom . fs ck . k 9 . Account Ċ import Ġcom . fs ck . k 9 . Account . Exp unge Ċ import Ġcom . fs ck . k 9 . Account . Sort Type Ċ import Ġcom . fs ck . k 9 . Clock Ċ import Ġcom . fs ck . k 9 . K 9 Ċ import Ġcom . fs ck . k 9 . Preferences Ċ import Ġcom . fs ck . k 9 . activity . Folder Info Holder Ċ import Ġcom . fs ck . k 9 . activity . misc . Contact Picture Ċ import Ġcom . fs ck . k 9 . controller . Message Reference Ċ import Ġcom . fs ck . k 9 . controller . Messaging Controller Ċ import Ġcom . fs ck . k 9 . controller . Simple Messaging Listener Ċ import Ġcom . fs ck . k 9 . fragment . Confirmation Dialog Fragment . Confirmation Dialog Fragment Listener Ċ import Ġcom . fs ck . k 9 . fragment . Message List Fragment . Message List Fragment Listener . Companion . MAX _ PROGRESS Ċ import Ġcom . fs ck . k 9 . helper . Utility Ċ import Ġcom . fs ck . k 9 . mail . Flag Ċ import Ġcom . fs ck . k 9 . mail . Messaging Exception Ċ import Ġcom . fs ck . k 9 . search . Local Search Ċ import Ġcom . fs ck . k 9 . search . Search Account Ċ import Ġcom . fs ck . k 9 . search . get Accounts Ċ import Ġcom . fs ck . k 9 . ui . R Ċ import Ġcom . fs ck . k 9 . ui . choose folder . Choose Folder Activity Ċ import Ġcom . fs ck . k 9 . ui . folders . Folder Name Formatter Ċ import Ġcom . fs ck . k 9 . ui . folders . Folder Name Formatter Factory Ċ import Ġcom . fs ck . k 9 . ui . helper . Relative DateTime Formatter Ċ import Ġcom . fs ck . k 9 . ui . message list . Message List Appearance Ċ import Ġcom . fs ck . k 9 . ui . message list . Message List Config Ċ import Ġcom . fs ck . k 9 . ui . message list . Message List Info Ċ import Ġcom . fs ck . k 9 . ui . message list . Message ListItem Ċ import Ġcom . fs ck . k 9 . ui . message list . Message List ViewModel Ċ import Ġjava . util . HashSet Ċ import Ġjava . util . concurrent . Future Ċ import Ġnet . j cip . annotations . Gu arded By Ċ import Ġorg . k oin . android . ext . android . inject Ċ import Ġorg . k oin . android x . view model . ext . android . viewModel Ċ import Ġtim ber . log . Tim ber Ċ Ċ class ĠMessage List Fragment Ġ: ĊĠĠĠ ĠFragment (), ĊĠĠĠ ĠOn ItemClickListener , ĊĠĠĠ ĠOn Item Long ClickListener , ĊĠĠĠ ĠConfirm ation Dialog Fragment Listener , ĊĠĠĠ ĠMessage ListItem ActionListener Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠMessage List ViewModel Ġby ĠviewModel () ĊĠĠĠ Ġprivate Ġval Ġsort Type Toast Provider : ĠSort Type Toast Provider Ġby Ġinject () ĊĠĠĠ Ġprivate Ġval Ġfolder Name Formatter Factory : ĠFolder Name Formatter Factory Ġby Ġinject () ĊĠĠĠ Ġprivate Ġval Ġfolder Name Formatter : ĠFolder Name Formatter Ġby Ġlazy Ġ{ Ġfolder Name Formatter Factory . create ( require Context ()) Ġ} ĊĠĠĠ Ġprivate Ġval Ġmessaging Controller : ĠMessaging Controller Ġby Ġinject () ĊĠĠĠ Ġprivate Ġval Ġpreferences : ĠPreferences Ġby Ġinject () ĊĊĠĠĠ Ġprivate Ġval Ġhandler Ġ= ĠMessage List Handler ( this ) ĊĠĠĠ Ġprivate Ġval Ġactivity Listener Ġ= ĠMessage List Activity Listener () ĊĠĠĠ Ġprivate Ġval Ġaction Mode Callback Ġ= ĠAction Mode Callback () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfragment Listener : ĠMessage List Fragment Listener ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠlistView : ĠListView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġswipe Refresh Layout : ĠSw ipe Refresh Layout ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġadapter : ĠMessage ListAdapter ĊĠĠĠ Ġprivate Ġvar Ġfooter View : ĠView ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġsaved List State : ĠParcel able ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġaccount Uuid s : ĠArray < String > ĊĠĠĠ Ġprivate Ġvar Ġaccount : ĠAccount ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġcurrent Folder : ĠFolder Info Holder ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġremote Search Future : ĠFuture < *> ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġextra SearchResults : ĠList < String >? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġthread Title : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġall Accounts Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġsort Type Ġ= ĠSort Type . SORT _ DATE ĊĠĠĠ Ġprivate Ġvar Ġsort Ascending Ġ= Ġtrue ĊĠĠĠ Ġprivate Ġvar Ġsort Date Ascending Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġselected Count Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġselected : ĠMutable Set < Long > Ġ= ĠHashSet () ĊĠĠĠ Ġprivate Ġvar Ġaction Mode : ĠAction Mode ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġhas Connectivity : ĠBoolean ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRe levant Ġmessages Ġfor Ġthe Ġcurrent Ġcontext Ġwhen Ġwe Ġhave Ġto Ġremember Ġthe Ġchosen Ġmessages ĊĠĠĠĠ Ġ* Ġbetween Ġuser Ġinteractions Ġ( e . g . Ġselecting Ġa Ġfolder Ġfor Ġmove Ġoperation ). ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġactive Messages : ĠList < Message Reference >? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġshowing Th readed List Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġis Thread Display Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġactive Message : ĠMessage Reference ? Ġ= Ġnull ĊĊĠĠĠ Ġvar Ġis Load Finished Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġlateinit Ġvar Ġlocal Search : ĠLocal Search ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġvar Ġis Single Account Mode Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġvar Ġis Single Folder Mode Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġvar Ġis Remote Search Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġprivate Ġval Ġis Unified Inbox : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġlocal Search . id Ġ== ĠSearch Account . UN IFI ED _ IN BOX ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ` true ` Ġafter Ġ[. onCreate ] Ġwas Ġexecuted . ĠUsed Ġin Ġ[. update Title ] Ġto ĊĠĠĠĠ Ġ* Ġmake Ġsure Ġwe Ġdon 't Ġaccess Ġmember Ġvariables Ġbefore Ġinitialization Ġis Ġcomplete . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġis Initialized Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġoverride Ġfun Ġon Attach ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attach ( context ) ĊĊĠĠĠĠĠĠĠ Ġfragment Listener Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġas ĠMessage List Fragment Listener ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠClass CastException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror ("${ context . java Class } Ġmust Ġimplement ĠMessage List Fragment Listener ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġrestore InstanceState ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġdecode Arguments () ĊĊĠĠĠĠĠĠĠ ĠviewModel . getMessage List LiveData (). observe ( this ) Ġ{ Ġmessage List Info : ĠMessage List Info Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Message List ( message List Info ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġis Initialized Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrestore InstanceState ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( savedInstanceState Ġ== Ġnull ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġrestore Selected Messages ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġis Remote Search Ġ= ĠsavedInstanceState . getBoolean ( STATE _ REMOTE _ SEARCH _ PER FOR MED ) ĊĠĠĠĠĠĠĠ Ġsaved List State Ġ= ĠsavedInstanceState . get Parcelable ( STATE _ MESSAGE _ LIST ) ĊĠĠĠĠĠĠĠ Ġval Ġmessage Reference String Ġ= ĠsavedInstanceState . getString ( STATE _ ACTIVE _ MESSAGE ) ĊĠĠĠĠĠĠĠ Ġactive Message Ġ= ĠMessage Reference . parse ( message Reference String ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrestore Selected Messages ( savedInstanceState : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġselected Ids Ġ= ĠsavedInstanceState . getLong Array ( STATE _ SELECTED _ MESSAGES ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġfor Ġ( id Ġin Ġselected Ids ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected . add ( id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrestore List State ( saved List State : ĠParcel able ) Ġ{ ĊĠĠĠĠĠĠĠ ĠlistView . on Restore InstanceState ( saved List State ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdecode Arguments () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġrequire Arguments () ĊĠĠĠĠĠĠĠ Ġshowing Th readed List Ġ= Ġarguments . getBoolean ( ARG _ TH RE ADED _ LIST , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġis Thread Display Ġ= Ġarguments . getBoolean ( ARG _ IS _ THREAD _ DISPLAY , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġlocal Search Ġ= Ġarguments . get Parcelable ( ARG _ SEARCH ) !! ĊĊĠĠĠĠĠĠĠ Ġall Accounts Ġ= Ġlocal Search . search All Accounts () ĊĠĠĠĠĠĠĠ Ġval Ġsearch Accounts Ġ= Ġlocal Search . get Accounts ( preferences ) ĊĠĠĠĠĠĠĠ Ġif Ġ( search Accounts . size Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Single Account Mode Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsingle Account Ġ= Ġsearch Accounts [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccount Ġ= Ġsingle Account ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccount Uuid s Ġ= ĠarrayOf ( single Account . uuid ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Single Account Mode Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccount Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccount Uuid s Ġ= Ġsearch Accounts . map Ġ{ Ġit . uuid Ġ}. to Typed Array () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġis Single Folder Mode Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( is Single Account Mode Ġ&& Ġlocal Search . folder Ids . size Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Single Folder Mode Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfolder Id Ġ= Ġlocal Search . folder Ids [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Folder Ġ= Ġget Folder Info Holder ( folder Id , Ġaccount !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . message _ list _ fragment , Ġcontainer , Ġfalse ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinitialize Swipe Refresh Layout ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinitialize ListView ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinitialize Swipe Refresh Layout ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġswipe Refresh Layout Ġ= Ġview . findViewById ( R . id . swiper ef resh ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( is Remote Search Allowed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Refresh Layout . setOn Refresh Listener Ġ{ Ġon Remote Search Requested () Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( is Check Mail Supported ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Refresh Layout . setOn Refresh Listener Ġ{ Ġcheck Mail () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠDisable Ġpull - to - refresh Ġuntil Ġthe Ġmessage Ġlist Ġhas Ġbeen Ġloaded ĊĠĠĠĠĠĠĠ Ġswipe Refresh Layout . isEnabled Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinitialize ListView ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ ĠlistView Ġ= Ġview . findViewById ( R . id . message _ list ) ĊĠĠĠĠĠĠĠ Ġwith ( list View ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscroll Bar Style Ġ= ĠView . SCROLL BAR S _ INS IDE _ OVER LAY ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Long Clickable Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Fast Scroll Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Vertical F ading Edge Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Scrolling Cache Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon ItemClickListener Ġ= Ġthis @ Message List Fragment ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Item Long ClickListener Ġ= Ġthis @ Message List Fragment ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġinitialize Message List () ĊĊĠĠĠĠĠĠĠ Ġ// ĠThis Ġneeds Ġto Ġbe Ġdone Ġbefore Ġloading Ġthe Ġmessage Ġlist Ġbelow ĊĠĠĠĠĠĠĠ Ġinitialize Sort Settings () ĊĠĠĠĠĠĠĠ Ġload Message List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinitialize Message List () Ġ{ ĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠMessage ListAdapter ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtheme Ġ= Ġrequire Activity (). theme , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres Ġ= Ġresources , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Inflater Ġ= Ġlayout Inflater , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontacts Picture Loader Ġ= ĠContact Picture . get Contact Picture Loader (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Item Listener Ġ= Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappearance Ġ= Ġmessage List Appearance , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrelative DateTime Formatter Ġ= ĠRelative DateTime Formatter ( require Context (), ĠClock . INSTANCE ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġadapter . active Message Ġ= Ġactive Message ĊĊĠĠĠĠĠĠĠ Ġif Ġ( is Single Folder Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistView . add Footer View ( get Footer View ( list View )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Footer ( null ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠlistView . adapter Ġ= Ġadapter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinitialize Sort Settings () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Single Account Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaccount Ġ= Ġthis . account !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsort Type Ġ= Ġaccount . sort Type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsort Ascending Ġ= Ġaccount . is Sort Ascending ( sort Type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsort Date Ascending Ġ= Ġaccount . is Sort Ascending ( Sort Type . SORT _ DATE ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsort Type Ġ= ĠK 9 . sort Type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsort Ascending Ġ= ĠK 9 . is Sort Ascending ( sort Type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsort Date Ascending Ġ= ĠK 9 . is Sort Ascending ( Sort Type . SORT _ DATE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Message List () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= ĠMessage List Config ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocal Search , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshowing Th readed List , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsort Type , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsort Ascending , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsort Date Ascending , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactive Message ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠviewModel . load Message List ( config ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfolder Loading ( folder Id : ĠLong , Ġloading : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrent Folder ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . database Id Ġ== Ġfolder Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . loading Ġ= Ġloading ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġupdate Footer View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Title () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! isInitialized ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġset Window Title () ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! local Search . is Manual Search ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Window Progress () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Window Progress () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġlevel Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġif Ġ( current Folder ?. loading Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfolder Total Ġ= Ġactivity Listener . get Folder Total () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( folder Total Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlevel Ġ= Ġ( MAX _ PROGRESS Ġ* Ġactivity Listener . get Folder Completed () Ġ/ Ġfolder Total ). coerce At Most ( MAX _ PROGRESS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfragment Listener . setMessage List Progress ( level ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Window Title () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Unified Inbox Ġ-> ĠgetString ( R . string . integr ated _ inbox _ title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Manual Search Ġ-> ĠgetString ( R . string . search _ results ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Thread Display Ġ-> Ġthread Title Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Single Folder Mode Ġ-> Ġcurrent Folder !!. displayName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfragment Listener . setMessage List Title ( title ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġprogress ( progress : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! progress ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Refresh Layout . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfragment Listener . setMessage List Progress Enabled ( progress ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Item Click ( parent : ĠAdapter View < *> ?, Ġview : ĠView , Ġposition : ĠInt , Ġid : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( view Ġ=== Ġfooter View ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Footer Click () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandle ListItem Click ( position ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Footer Click () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Folder Ġ= Ġthis . current Folder Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġif Ġ( current Folder . more Messages Ġ&& Ġ! local Search . is Manual Search ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfolder Id Ġ= Ġcurrent Folder . database Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessaging Controller . load More Messages ( account , Ġfolder Id , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( is Remote Search ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġadditional SearchResults Ġ= Ġextra SearchResults Ġ?: Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( additional SearchResults . isEmpty ()) Ġreturn ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġload SearchResults : ĠList < String > ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlimit Ġ= Ġaccount !!. remote Search Num Results ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( limit Ġin Ġ 1 Ġuntil Ġadditional SearchResults . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġextra SearchResults Ġ= Ġadditional SearchResults . sub List ( limit , Ġadditional SearchResults . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload SearchResults Ġ= Ġadditional SearchResults . sub List ( 0 , Ġlimit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġextra SearchResults Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload SearchResults Ġ= Ġadditional SearchResults ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Footer ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessaging Controller . load SearchResults ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccount , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Folder . database Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload SearchResults , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Listener ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle ListItem Click ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( selected Count Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoggle Message Select ( position ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġadapter Position Ġ= ĠlistView To Adapter Position ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage ListItem Ġ= Ġadapter . getItem ( adapter Position ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( show ing Th readed List Ġ&& Ġmessage ListItem . thread Count Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Listener . show Thread ( message ListItem . account , Ġmessage ListItem . thread Root ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Message At Position ( adapter Position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Item Long Click ( parent : ĠAdapter View < *> ?, Ġview : ĠView , Ġposition : ĠInt , Ġid : ĠLong ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( view Ġ=== Ġfooter View ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġtoggle Message Select ( position ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsaved List State Ġ= ĠlistView . on Save InstanceState () ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Save InstanceState ( out State : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Save InstanceState ( out State ) ĊĊĠĠĠĠĠĠĠ Ġsave List State ( out State ) ĊĠĠĠĠĠĠĠ Ġout State . put Long Array ( STATE _ SELECTED _ MESSAGES , Ġselected . to Long Array ()) ĊĠĠĠĠĠĠĠ Ġout State . put Boolean ( STATE _ REMOTE _ SEARCH _ PER FOR MED , Ġis Remote Search ) ĊĠĠĠĠĠĠĠ Ġif Ġ( active Message Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout State . putString ( STATE _ ACTIVE _ MESSAGE , Ġactive Message !!. to Identity String ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsave List State ( out State : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( saved List State Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe Ġpreviously Ġsaved Ġstate Ġwas Ġnever Ġrestored , Ġso Ġjust Ġuse Ġthat . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout State . put Parcelable ( STATE _ MESSAGE _ LIST , Ġsaved List State ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout State . put Parcelable ( STATE _ MESSAGE _ LIST , ĠlistView . on Save InstanceState ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġmessage List Appearance : ĠMessage List Appearance ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠMessage List Appearance ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfont Sizes Ġ= ĠK 9 . font Sizes , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpreview Lines Ġ= ĠK 9 . message List Preview Lines , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstars Ġ= Ġ! is Out box Ġ&& ĠK 9 . is Show Message List St ars , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsender Above Subject Ġ= ĠK 9 . is Message List Sender Above Subject , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Contact Picture Ġ= ĠK 9 . is Show Contact Picture , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshowing Th readed List Ġ= Ġshowing Th readed List , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġback Ground As Read Indicator Ġ= ĠK 9 . is Use Background As Un read Indicator , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Account Chip Ġ= Ġ! is Single Account Mode ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun Ġget Folder Info Holder ( folder Id : ĠLong , Ġaccount : ĠAccount ): ĠFolder Info Holder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocal Folder Ġ= ĠM lf Utils . get Open Folder ( folder Id , Ġaccount ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFolder Info Holder ( folder Name Formatter , Ġlocal Folder , Ġaccount ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠMessaging Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( has Connectivity Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas Connectivity Ġ= ĠUtility . has Connectivity ( require Activity (). application ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmessaging Controller . addListener ( activity Listener ) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( account Ġin Ġlocal Search . get Accounts ( preferences )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessaging Controller . cancel Notifications For Account ( account ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġupdate Title () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĊĠĠĠĠĠĠĠ Ġmessaging Controller . remove Listener ( activity Listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġgo Back () Ġ{ ĊĠĠĠĠĠĠĠ Ġfragment Listener . go Back () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Compose () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Single Account Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Listener . on Compose ( null ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Listener . on Compose ( account ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġchange Sort ( sort Type : ĠSort Type ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsort Ascending Ġ= Ġif Ġ( this . sort Type Ġ== Ġsort Type ) Ġ! sort Ascending Ġelse Ġnull ĊĠĠĠĠĠĠĠ Ġchange Sort ( sort Type , Ġsort Ascending ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Remote Search Requested () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsearch Account Ġ= Ġaccount !!. uuid ĊĠĠĠĠĠĠĠ Ġval Ġfolder Id Ġ= Ġcurrent Folder !!. database Id ĊĠĠĠĠĠĠĠ Ġval ĠqueryString Ġ= Ġlocal Search . remote Search Arguments ĊĊĠĠĠĠĠĠĠ Ġis Remote Search Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġswipe Refresh Layout . isEnabled Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġremote Search Future Ġ= Ġmessaging Controller . search Remote Messages ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Account , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfolder Id , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠqueryString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Listener ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġfragment Listener . remote Search Started () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠChange Ġthe Ġsort Ġtype Ġand Ġsort Ġorder Ġused Ġfor Ġthe Ġmessage Ġlist . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġsort Type ĠSpecifies Ġwhich Ġfield Ġto Ġuse Ġfor Ġsorting Ġthe Ġmessage Ġlist . ĊĠĠĠĠ Ġ* Ġ@ param Ġsort Ascending ĠSpecifies Ġthe Ġsort Ġorder . ĠIf Ġthis Ġargument Ġis Ġ` null ` Ġthe Ġdefault Ġsearch Ġorder Ġfor Ġthe ĊĠĠĠĠ Ġ* ĠĠ Ġsort Ġtype Ġis Ġused . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ// ĠFIXME : ĠDon 't Ġsave Ġthe Ġchanges Ġin Ġthe ĠUI Ġthread ĊĠĠĠ Ġprivate Ġfun Ġchange Sort ( sort Type : ĠSort Type , Ġsort Ascending : ĠBoolean ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . sort Type Ġ= Ġsort Type ĊĊĠĠĠĠĠĠĠ Ġval Ġaccount Ġ= Ġaccount ĊĠĠĠĠĠĠĠ Ġif Ġ( account Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccount . sort Type Ġ= Ġthis . sort Type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sort Ascending Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . sort Ascending Ġ= Ġaccount . is Sort Ascending ( this . sort Type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . sort Ascending Ġ= Ġsort Ascending ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccount . set Sort Ascending ( this . sort Type , Ġthis . sort Ascending ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsort Date Ascending Ġ= Ġaccount . is Sort Ascending ( Sort Type . SORT _ DATE ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences . save Account ( account ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠK 9 . sort Type Ġ= Ġthis . sort Type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sort Ascending Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . sort Ascending Ġ= ĠK 9 . is Sort Ascending ( this . sort Type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . sort Ascending Ġ= Ġsort Ascending ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠK 9 . set Sort Ascending ( this . sort Type , Ġthis . sort Ascending ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsort Date Ascending Ġ= ĠK 9 . is Sort Ascending ( Sort Type . SORT _ DATE ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠK 9 . save Settings Async () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġre Sort () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġre Sort () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtoast String Ġ= Ġsort Type Toast Provider . get Toast ( sort Type , Ġsort Ascending ) ĊĠĠĠĠĠĠĠ ĠToast . makeText ( activity , Ġtoast String , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġload Message List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Cycle Sort () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsort Types Ġ= ĠSort Type . values () ĊĠĠĠĠĠĠĠ Ġval ĠcurrentIndex Ġ= Ġsort Types . indexOf ( sort Type ) ĊĠĠĠĠĠĠĠ Ġval Ġnew Index Ġ= Ġif Ġ( currentIndex Ġ== Ġsort Types . last Index ) Ġ 0 Ġelse ĠcurrentIndex Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠ Ġval Ġnext Sort Type Ġ= Ġsort Types [ new Index ] ĊĠĠĠĠĠĠĠ Ġchange Sort ( next Sort Type ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠonDelete ( messages : ĠList < Message Reference >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( K 9 . is Confirm Delete ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġremember Ġthe Ġmessage Ġselection Ġfor Ġ# onCreate Dialog ( int ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactive Messages Ġ= Ġmessages ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Dialog ( R . id . dialog _ confirm _ delete ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonDelete Confirmed ( messages ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠonDelete Confirmed ( messages : ĠList < Message Reference >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( show ing Th readed List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessaging Controller . delete Threads ( messages ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessaging Controller . delete Messages ( messages ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( result Code Ġ!= ĠActivity . RESULT _ OK ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( request Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠACT IVITY _ CH OOSE _ FOLDER _ MOVE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠACT IVITY _ CH OOSE _ FOLDER _ COPY Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data Ġ== Ġnull ) Ġreturn ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdestination Folder Id Ġ= Ġdata . getLong Extra ( Choose Folder Activity . RESULT _ SELECTED _ FOLDER _ ID , Ġ- 1 L ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessages Ġ= Ġactive Messages !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( destination Folder Id Ġ!= Ġ- 1 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactive Messages Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( messages . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠM lf Utils . set Last Selected Folder ( preferences , Ġmessages , Ġdestination Folder Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( request Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠACT IVITY _ CH OOSE _ FOLDER _ MOVE Ġ-> Ġmove ( messages , Ġdestination Folder Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠACT IVITY _ CH OOSE _ FOLDER _ COPY Ġ-> Ġcopy ( messages , Ġdestination Folder Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Exp unge () Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrent Folder ?. let Ġ{ Ġfolder Info Holder Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Exp unge ( account , Ġfolder Info Holder . database Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Exp unge ( account : ĠAccount ?, Ġfolder Id : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmessaging Controller . exp unge ( account , Ġfolder Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Empty Trash () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Showing Trash Folder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Dialog ( R . id . dialog _ confirm _ empty _ trash ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġis Showing Trash Folder : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Single Folder Mode ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcurrent Folder !!. database Id Ġ== Ġaccount !!. trash Folder Id ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Dialog ( dialog Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdialog Fragment Ġ= Ġwhen Ġ( dialog Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . dialog _ confirm _ spam Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= ĠgetString ( R . string . dialog _ confirm _ spam _ title ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselection Size Ġ= Ġactive Messages !!. size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġresources . get Quantity String ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . plurals . dialog _ confirm _ spam _ message , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselection Size , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselection Size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfirm Text Ġ= ĠgetString ( R . string . dialog _ confirm _ spam _ confirm _ button ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcancel Text Ġ= ĠgetString ( R . string . dialog _ confirm _ spam _ cancel _ button ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfirm ation Dialog Fragment . newInstance ( dialog Id , Ġtitle , Ġmessage , Ġconfirm Text , Ġcancel Text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . dialog _ confirm _ delete Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= ĠgetString ( R . string . dialog _ confirm _ delete _ title ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselection Size Ġ= Ġactive Messages !!. size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġresources . get Quantity String ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . plurals . dialog _ confirm _ delete _ messages , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselection Size , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselection Size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfirm Text Ġ= ĠgetString ( R . string . dialog _ confirm _ delete _ confirm _ button ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcancel Text Ġ= ĠgetString ( R . string . dialog _ confirm _ delete _ cancel _ button ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfirm ation Dialog Fragment . newInstance ( dialog Id , Ġtitle , Ġmessage , Ġconfirm Text , Ġcancel Text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . dialog _ confirm _ mark _ all _ as _ read Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= ĠgetString ( R . string . dialog _ confirm _ mark _ all _ as _ read _ title ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠgetString ( R . string . dialog _ confirm _ mark _ all _ as _ read _ message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfirm Text Ġ= ĠgetString ( R . string . dialog _ confirm _ mark _ all _ as _ read _ confirm _ button ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcancel Text Ġ= ĠgetString ( R . string . dialog _ confirm _ mark _ all _ as _ read _ cancel _ button ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfirm ation Dialog Fragment . newInstance ( dialog Id , Ġtitle , Ġmessage , Ġconfirm Text , Ġcancel Text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . dialog _ confirm _ empty _ trash Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= ĠgetString ( R . string . dialog _ confirm _ empty _ trash _ title ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠgetString ( R . string . dialog _ confirm _ empty _ trash _ message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfirm Text Ġ= ĠgetString ( R . string . dialog _ confirm _ delete _ confirm _ button ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcancel Text Ġ= ĠgetString ( R . string . dialog _ confirm _ delete _ cancel _ button ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfirm ation Dialog Fragment . newInstance ( dialog Id , Ġtitle , Ġmessage , Ġconfirm Text , Ġcancel Text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException (" Called Ġshow Dialog ( int ) Ġwith Ġunknown Ġdialog Ġid .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdialog Fragment . setTarget Fragment ( this , Ġdialog Id ) ĊĠĠĠĠĠĠĠ Ġdialog Fragment . show ( parent FragmentManager , Ġget Dialog Tag ( dialog Id )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Dialog Tag ( dialog Id : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" dialog -$ dialog Id " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġitem . itemId ĊĠĠĠĠĠĠĠ Ġif Ġ( id Ġ== ĠR . id . set _ sort _ date ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchange Sort ( Sort Type . SORT _ DATE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( id Ġ== ĠR . id . set _ sort _ arrival ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchange Sort ( Sort Type . SORT _ AR RI VAL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( id Ġ== ĠR . id . set _ sort _ subject ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchange Sort ( Sort Type . SORT _ SUBJECT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( id Ġ== ĠR . id . set _ sort _ sender ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchange Sort ( Sort Type . SORT _ SEND ER ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( id Ġ== ĠR . id . set _ sort _ flag ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchange Sort ( Sort Type . SORT _ FLAG GED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( id Ġ== ĠR . id . set _ sort _ unread ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchange Sort ( Sort Type . SORT _ UN READ ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( id Ġ== ĠR . id . set _ sort _ attach ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchange Sort ( Sort Type . SORT _ ATTACHMENT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( id Ġ== ĠR . id . select _ all ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect All () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! is Single Account Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNone Ġof Ġthe Ġoptions Ġafter Ġthis Ġpoint Ġare Ġ" safe " Ġfor Ġsearch Ġresults ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : ĠThis Ġis Ġnot Ġtrue Ġfor Ġ" unread " Ġand Ġ" star red " Ġsearches Ġin Ġregular Ġfolders ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( id Ġ== ĠR . id . send _ messages ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Send Pending Messages () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( id Ġ== ĠR . id . exp unge ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Folder ?. let Ġ{ Ġfolder Info Holder Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Exp unge ( account , Ġfolder Info Holder . database Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Send Pending Messages () Ġ{ ĊĠĠĠĠĠĠĠ Ġmessaging Controller . send Pending Messages ( account , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠlistView To Adapter Position ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( position Ġin Ġ 0 Ġuntil Ġadapter . count ) Ġposition Ġelse ĠAdapter View . INVALID _ POSITION ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadapter To ListView Position ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( position Ġin Ġ 0 Ġuntil Ġadapter . count ) Ġposition Ġelse ĠAdapter View . INVALID _ POSITION ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Footer View ( parent : ĠViewGroup ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfooter View Ġ?: Ġcreate Footer View ( parent ). also Ġ{ Ġfooter View Ġ= Ġit Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Footer View ( parent : ĠViewGroup ?): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġlayout Inflater . inflate ( R . layout . message _ list _ item _ footer , Ġparent , Ġfalse ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtag Ġ= ĠFooter ViewHolder ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Footer View () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Folder Ġ= Ġthis . current Folder ĊĠĠĠĠĠĠĠ Ġval Ġaccount Ġ= Ġthis . account ĊĊĠĠĠĠĠĠĠ Ġif Ġ( local Search . is Manual Search Ġ|| Ġcurrent Folder Ġ== Ġnull Ġ|| Ġaccount Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Footer ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġfooter Text Ġ= Ġif Ġ( current Folder . loading ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . status _ loading _ more ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(! current Folder . more Messages ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( account . display Count Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . message _ list _ load _ more _ messages _ action ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . load _ more _ messages _ fmt , Ġaccount . display Count ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġupdate Footer ( footer Text ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Footer ( text : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfooter View Ġ= Ġthis . footer View Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġshould Hide Footer Ġ= Ġtext Ġ== Ġnull ĊĠĠĠĠĠĠĠ Ġif Ġ( should Hide Footer ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistView . remove Footer View ( footer View ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Footer View Added To ListView Ġ= ĠlistView . footer Views Count Ġ> Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Footer View Added To ListView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistView . add Footer View ( footer View ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġholder Ġ= Ġfooter View . tag Ġas ĠFooter ViewHolder ĊĠĠĠĠĠĠĠ Ġholder . main . text Ġ= Ġtext ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Selection State ( selected : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( selected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( adapter . count Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNothing Ġto Ġdo Ġif Ġthere Ġare Ġno Ġmessages ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Count Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġadapter . count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage ListItem Ġ= Ġadapter . getItem ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . selected . add ( message ListItem . unique Id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( show ing Th readed List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Count Ġ+= Ġmessage ListItem . thread Count . coerce At Least ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Count ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action Mode Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart And Prepare Action Mode () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompute Batch Direction () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Action Mode Title () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompute Select All Visibility () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . selected . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Count Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Mode ?. finish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Mode Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtoggle Message Select ( list View Position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġadapter Position Ġ= ĠlistView To Adapter Position ( list View Position ) ĊĠĠĠĠĠĠĠ Ġif Ġ( adapter Position Ġ== ĠAdapter View . INVALID _ POSITION ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġmessage ListItem Ġ= Ġadapter . getItem ( adapter Position ) ĊĠĠĠĠĠĠĠ Ġtoggle Message Select ( message ListItem ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtoggle Message Select ( message ListItem : ĠMessage ListItem ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġunique Id Ġ= Ġmessage ListItem . unique Id ĊĠĠĠĠĠĠĠ Ġval Ġselected Ġ= Ġselected . contains ( unique Id ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! selected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . selected . add ( unique Id ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . selected . remove ( unique Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġselected Count Delta Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġif Ġ( show ing Th readed List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġthread Count Ġ= Ġmessage ListItem . thread Count ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( thread Count Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Count Delta Ġ= Ġthread Count ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( action Mode Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( selected Ġ&& Ġselected Count Ġ- Ġselected Count Delta Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Mode ?. finish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Mode Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart And Prepare Action Mode () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( selected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Count Ġ-= Ġselected Count Delta ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Count Ġ+= Ġselected Count Delta ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcompute Batch Direction () ĊĠĠĠĠĠĠĠ Ġupdate Action Mode Title () ĊĠĠĠĠĠĠĠ Ġcompute Select All Visibility () ĊĊĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Toggle Message Selection ( item : ĠMessage ListItem ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtoggle Message Select ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Toggle Message Flag ( item : ĠMessage ListItem ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Flag ( item , ĠFlag . FLAG GED , Ġ! item . is Star red ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Action Mode Title () Ġ{ ĊĠĠĠĠĠĠĠ Ġaction Mode !!. title Ġ= ĠgetString ( R . string . action bar _ selected , Ġselected Count ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcompute Select All Visibility () Ġ{ ĊĠĠĠĠĠĠĠ Ġaction Mode Callback . show Select All ( selected . size Ġ!= Ġadapter . count ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcompute Batch Direction () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġis Batch Flag Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġvar Ġis Batch Read Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġadapter . count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage ListItem Ġ= Ġadapter . getItem ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( selected . contains ( message ListItem . unique Id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! message ListItem . is Star red ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Batch Flag Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! message ListItem . is Read ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Batch Read Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Batch Flag Ġ&& Ġis Batch Read ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġaction Mode Callback . show Mark As Read ( is Batch Read ) ĊĠĠĠĠĠĠĠ Ġaction Mode Callback . show Flag ( is Batch Flag ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Flag ( message ListItem : ĠMessage ListItem , Ġflag : ĠFlag , ĠnewState : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaccount Ġ= Ġmessage ListItem . account ĊĠĠĠĠĠĠĠ Ġif Ġ( show ing Th readed List Ġ&& Ġmessage ListItem . thread Count Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġthread Root Id Ġ= Ġmessage ListItem . thread Root ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessaging Controller . set Flag For Threads ( account , ĠlistOf ( thread Root Id ), Ġflag , ĠnewState ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠmessageId Ġ= Ġmessage ListItem . database Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessaging Controller . set Flag ( account , ĠlistOf ( message Id ), Ġflag , ĠnewState ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcompute Batch Direction () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Flag For Selected ( flag : ĠFlag , ĠnewState : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( selected . isEmpty ()) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġmessage Map : ĠMutable Map < Account , ĠMutable List < Long >> Ġ= Ġmutable Map Of () ĊĠĠĠĠĠĠĠ Ġval Ġthread Map : ĠMutable Map < Account , ĠMutable List < Long >> Ġ= Ġmutable Map Of () ĊĠĠĠĠĠĠĠ Ġval Ġaccounts : ĠMutable Set < Account > Ġ= Ġmutable Set Of () ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( position Ġin Ġ 0 Ġuntil Ġadapter . count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage ListItem Ġ= Ġadapter . getItem ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaccount Ġ= Ġmessage ListItem . account ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( message ListItem . unique Id Ġin Ġselected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccounts . add ( account ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( show ing Th readed List Ġ&& Ġmessage ListItem . thread Count Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġthread Root IdList Ġ= Ġthread Map . get Or Put ( account ) Ġ{ Ġmutable ListOf () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthread Root IdList . add ( message ListItem . thread Root ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage IdList Ġ= Ġmessage Map . get Or Put ( account ) Ġ{ Ġmutable ListOf () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage IdList . add ( message ListItem . database Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( account Ġin Ġaccounts ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Map [ account ]?. let Ġ{ Ġmessage Ids Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessaging Controller . set Flag ( account , Ġmessage Ids , Ġflag , ĠnewState ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġthread Map [ account ]?. let Ġ{ Ġthread Root Ids Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessaging Controller . set Flag For Threads ( account , Ġthread Root Ids , Ġflag , ĠnewState ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcompute Batch Direction () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Move ( message : ĠMessage Reference ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Move ( listOf ( message )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Move ( messages : ĠList < Message Reference >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! check Copy Or Move Possible ( messages , ĠFolder Operation . MOVE )) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġfolder Id Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Thread Display Ġ-> Ġmessages . first (). folder Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Single Folder Mode Ġ-> Ġcurrent Folder !!. database Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdisplay Folder Choice ( ACTIVITY _ CH OOSE _ FOLDER _ MOVE , Ġfolder Id , Ġmessages . first (). account Uuid , Ġnull , Ġmessages ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Copy ( message : ĠMessage Reference ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Copy ( listOf ( message )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Copy ( messages : ĠList < Message Reference >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! check Copy Or Move Possible ( messages , ĠFolder Operation . COPY )) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġfolder Id Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Thread Display Ġ-> Ġmessages . first (). folder Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Single Folder Mode Ġ-> Ġcurrent Folder !!. database Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdisplay Folder Choice ( ACTIVITY _ CH OOSE _ FOLDER _ COPY , Ġfolder Id , Ġmessages . first (). account Uuid , Ġnull , Ġmessages ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdisplay Folder Choice ( ĊĠĠĠĠĠĠĠ Ġrequest Code : ĠInt , ĊĠĠĠĠĠĠĠ Ġsource Folder Id : ĠLong ?, ĊĠĠĠĠĠĠĠ Ġaccount Uuid : ĠString , ĊĠĠĠĠĠĠĠ Ġlast Selected Folder Id : ĠLong ?, ĊĠĠĠĠĠĠĠ Ġmessages : ĠList < Message Reference > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠChoose Folder Activity . build Launch Intent ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccount Uuid Ġ= Ġaccount Uuid , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Folder Id Ġ= Ġsource Folder Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscroll To Folder Id Ġ= Ġlast Selected Folder Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Display able Only Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Reference Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġremember Ġthe Ġselected Ġmessages Ġfor Ġ# on Activity Result ĊĠĠĠĠĠĠĠ Ġactive Messages Ġ= Ġmessages ĊĊĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , Ġrequest Code ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Archive ( message : ĠMessage Reference ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Archive ( listOf ( message )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Archive ( messages : ĠList < Message Reference >) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ(( account , Ġmessages In Account ) Ġin Ġgroup Messages By Account ( messages )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccount . archive Folder Id ?. let Ġ{ Ġarchive Folder Id Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove ( messages In Account , Ġarchive Folder Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgroup Messages By Account ( messages : ĠList < Message Reference >): ĠMap < Account , ĠList < Message Reference >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmessages . groupBy Ġ{ Ġpreferences . get Account ( it . account Uuid ) !! Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Sp am ( messages : ĠList < Message Reference >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( K 9 . is Confirm Sp am ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġremember Ġthe Ġmessage Ġselection Ġfor Ġ# onCreate Dialog ( int ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactive Messages Ġ= Ġmessages ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Dialog ( R . id . dialog _ confirm _ spam ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Sp am Confirmed ( messages ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Sp am Confirmed ( messages : ĠList < Message Reference >) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ(( account , Ġmessages In Account ) Ġin Ġgroup Messages By Account ( messages )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccount . spam Folder Id ?. let Ġ{ Ġspam Folder Id Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove ( messages In Account , Ġspam Folder Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck Copy Or Move Possible ( messages : ĠList < Message Reference >, Ġoperation : ĠFolder Operation ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( messages . isEmpty ()) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġval Ġaccount Ġ= Ġpreferences . get Account ( messages . first (). account Uuid ) ĊĠĠĠĠĠĠĠ Ġif Ġ( operation Ġ== ĠFolder Operation . MOVE Ġ&& Ġ! messaging Controller . is Move Cap able ( account ) Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoperation Ġ== ĠFolder Operation . COPY Ġ&& Ġ! messaging Controller . is Copy Cap able ( account ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( message Ġin Ġmessages ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( operation Ġ== ĠFolder Operation . MOVE Ġ&& Ġ! messaging Controller . is Move Cap able ( message ) Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoperation Ġ== ĠFolder Operation . COPY Ġ&& Ġ! messaging Controller . is Copy Cap able ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoast Ġ= ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity , ĠR . string . move _ copy _ cannot _ copy _ un sync ed _ message , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ LONG ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast . show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcopy ( messages : ĠList < Message Reference >, Ġfolder Id : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcopy Or Move ( messages , Ġfolder Id , ĠFolder Operation . COPY ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmove ( messages : ĠList < Message Reference >, Ġfolder Id : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcopy Or Move ( messages , Ġfolder Id , ĠFolder Operation . MOVE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcopy Or Move ( messages : ĠList < Message Reference >, Ġdestination Folder Id : ĠLong , Ġoperation : ĠFolder Operation ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! check Copy Or Move Possible ( messages , Ġoperation )) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġfolder Map Ġ= Ġmessages . as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Not Ġ{ Ġit . folder Id Ġ== Ġdestination Folder Id Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. groupBy Ġ{ Ġit . folder Id Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ(( folder Id , Ġmessages In Folder ) Ġin Ġfolder Map ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaccount Ġ= Ġpreferences . get Account ( messages In Folder . first (). account Uuid ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( operation Ġ== ĠFolder Operation . MOVE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( show ing Th readed List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessaging Controller . move Messages In Thread ( account , Ġfolder Id , Ġmessages In Folder , Ġdestination Folder Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessaging Controller . move Messages ( account , Ġfolder Id , Ġmessages In Folder , Ġdestination Folder Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( show ing Th readed List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessaging Controller . copy Messages In Thread ( account , Ġfolder Id , Ġmessages In Folder , Ġdestination Folder Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessaging Controller . copy Messages ( account , Ġfolder Id , Ġmessages In Folder , Ġdestination Folder Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon MoveTo Draft s Folder ( messages : ĠList < Message Reference >) Ġ{ ĊĠĠĠĠĠĠĠ Ġmessaging Controller . moveTo Draft s Folder ( account , Ġcurrent Folder !!. database Id , Ġmessages ) ĊĠĠĠĠĠĠĠ Ġactive Messages Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdo Positive Click ( dialog Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( dialog Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . dialog _ confirm _ spam Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Sp am Confirmed ( active Messages !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactive Messages Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . dialog _ confirm _ delete Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonDelete Confirmed ( active Messages !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactive Message Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . active Message Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . dialog _ confirm _ mark _ all _ as _ read Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmark All As Read () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . dialog _ confirm _ empty _ trash Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessaging Controller . empty Trash ( account , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdo Negative Click ( dialog Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( dialog Id Ġ== ĠR . id . dialog _ confirm _ spam Ġ|| Ġdialog Id Ġ== ĠR . id . dialog _ confirm _ delete ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNo Ġfurther Ġneed Ġfor Ġthis Ġreference ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactive Messages Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdialog Cancelled ( dialog Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdo Negative Click ( dialog Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck Mail () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Single Account Mode Ġ&& Ġis Single Folder Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfolder Id Ġ= Ġcurrent Folder !!. database Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessaging Controller . synchron ize Mailbox ( account , Ġfolder Id , Ġactivity Listener ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessaging Controller . send Pending Messages ( account , Ġactivity Listener ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( all Accounts ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessaging Controller . check Mail ( null , Ġtrue , Ġtrue , Ġactivity Listener ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( account Uuid Ġin Ġaccount Uuid s ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaccount Ġ= Ġpreferences . get Account ( account Uuid ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessaging Controller . check Mail ( account , Ġtrue , Ġtrue , Ġactivity Listener ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġwe Ġrepresent Ġa Ġremote Ġsearch , Ġthen Ġkill Ġthat Ġbefore Ġgoing Ġback . ĊĠĠĠĠĠĠĠ Ġif Ġ( is Remote Search Ġ&& Ġremote Search Future Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Remote Ġsearch Ġin Ġprogress , Ġattempting Ġto Ġabort ...") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCancel ing Ġthe Ġfuture Ġstops Ġany Ġmessage Ġf etches Ġin Ġprogress . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcancel Success Ġ= Ġremote Search Future !!. cancel ( true ) Ġ// Ġmay Interrupt If Running Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! cancel Success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e (" Could Ġnot Ġcancel Ġremote Ġsearch Ġfuture .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠClosing Ġthe Ġfolder Ġwill Ġkill Ġoff Ġthe Ġconnection Ġif Ġwe 're Ġmid - search . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsearch Account Ġ= Ġaccount !! ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSend Ġa Ġremote Search Finished () Ġmessage Ġfor Ġgood Ġmeasure . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Listener . remote Search Finished ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Folder !!. database Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Account . remote Search Num Results , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSince Ġthe Ġuser Ġis Ġgoing Ġback , Ġlog Ġand Ġsqu ash Ġany Ġexceptions . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e ( e , Ġ" Could Ġnot Ġabort Ġremote Ġsearch Ġbefore Ġgoing Ġback ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġselect All () Ġ{ ĊĠĠĠĠĠĠĠ Ġset Selection State ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Move Up () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcurrent Position Ġ= ĠlistView . selected Item Position ĊĠĠĠĠĠĠĠ Ġif Ġ( current Position Ġ== ĠAdapter View . INVALID _ POSITION Ġ|| ĠlistView . isIn Touch Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Position Ġ= ĠlistView . first Visible Position ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( current Position Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistView . setSelection ( current Position Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Move Down () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcurrent Position Ġ= ĠlistView . selected Item Position ĊĠĠĠĠĠĠĠ Ġif Ġ( current Position Ġ== ĠAdapter View . INVALID _ POSITION Ġ|| ĠlistView . isIn Touch Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Position Ġ= ĠlistView . first Visible Position ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( current Position Ġ< ĠlistView . count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistView . setSelection ( current Position Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġopen Previous ( message Reference : ĠMessage Reference ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġget Position ( message Reference ) ĊĠĠĠĠĠĠĠ Ġif Ġ( position Ġ<= Ġ 0 ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġopen Message At Position ( position Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġopen Next ( message Reference : ĠMessage Reference ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġget Position ( message Reference ) ĊĠĠĠĠĠĠĠ Ġif Ġ( position Ġ< Ġ 0 Ġ|| Ġposition Ġ== Ġadapter . count Ġ- Ġ 1 ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġopen Message At Position ( position Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis First ( message Reference : ĠMessage Reference ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġadapter . isEmpty Ġ|| Ġmessage Reference Ġ== Ġget Reference For Position ( 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Last ( message Reference : ĠMessage Reference ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġadapter . isEmpty Ġ|| Ġmessage Reference Ġ== Ġget Reference For Position ( adapter . count Ġ- Ġ 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Reference For Position ( position : ĠInt ): ĠMessage Reference Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġadapter . getItem ( position ) ĊĠĠĠĠĠĠĠ Ġreturn ĠMessage Reference ( item . account . uuid , Ġitem . folder Id , Ġitem . message Uid , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġopen Message At Position ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠScroll Ġmessage Ġinto Ġview Ġif Ġnecessary ĊĠĠĠĠĠĠĠ Ġval ĠlistView Position Ġ= Ġadapter To ListView Position ( position ) ĊĠĠĠĠĠĠĠ Ġif Ġ( list View Position Ġ!= ĠAdapter View . INVALID _ POSITION Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( list View Position Ġ< ĠlistView . first Visible Position Ġ|| ĠlistView Position Ġ> ĠlistView . last Visible Position ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistView . setSelection ( list View Position ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġmessage Reference Ġ= Ġget Reference For Position ( position ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠFor Ġsome Ġreason Ġthe ĠlistView . setSelection () Ġabove Ġwon 't Ġdo Ġanything Ġwhen Ġwe Ġcall ĊĠĠĠĠĠĠĠ Ġ// Ġon Open Message () Ġ( and Ġcon sequent ly Ġadapter . notify DataSet Changed ()) Ġright Ġaway . ĠSo Ġwe ĊĠĠĠĠĠĠĠ Ġ// Ġdefer Ġthe Ġcall Ġusing ĠMessage List Handler . ĊĠĠĠĠĠĠĠ Ġhandler . open Message ( message Reference ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġopen Message ( message Reference : ĠMessage Reference ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfragment Listener . open Message ( message Reference ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Position ( message Reference : ĠMessage Reference ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġadapter . messages . indexOf First Ġ{ Ġmessage ListItem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage ListItem . account . uuid Ġ== Ġmessage Reference . account Uuid Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage ListItem . folder Id Ġ== Ġmessage Reference . folder Id Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage ListItem . message Uid Ġ== Ġmessage Reference . uid ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Reverse Sort () Ġ{ ĊĠĠĠĠĠĠĠ Ġchange Sort ( sort Type ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġselected Message : ĠMessage Reference ? ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠlistView Position Ġ= ĠlistView . selected Item Position ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġadapter Position Ġ= ĠlistView To Adapter Position ( list View Position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( adapter Position Ġ== ĠAdapter View . INVALID _ POSITION ) Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġget Reference For Position ( adapter Position ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġadapter Position For Selected Message : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠlistView Position Ġ= ĠlistView . selected Item Position ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠlistView To Adapter Position ( list View Position ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġchecked Messages : ĠList < Message Reference > ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġadapter . messages ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . unique Id Ġin Ġselected Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĠMessage Reference ( it . account . uuid , Ġit . folder Id , Ġit . message Uid , Ġnull ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠonDelete () Ġ{ ĊĠĠĠĠĠĠĠ Ġselected Message ?. let Ġ{ Ġmessage Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonDelete ( listOf ( message )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtoggle Message Select () Ġ{ ĊĠĠĠĠĠĠĠ Ġtoggle Message Select ( list View . selected Item Position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Toggle Flag ged () Ġ{ ĊĠĠĠĠĠĠĠ Ġtoggle Flag ( Flag . FLAG GED ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Toggle Read () Ġ{ ĊĠĠĠĠĠĠĠ Ġtoggle Flag ( Flag . SE EN ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtoggle Flag ( flag : ĠFlag ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġadapter Position Ġ= Ġadapter Position For Selected Message ĊĠĠĠĠĠĠĠ Ġif Ġ( adapter Position Ġ== ĠListView . INVALID _ POSITION ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġmessage ListItem Ġ= Ġadapter . getItem ( adapter Position ) ĊĠĠĠĠĠĠĠ Ġval Ġflag State Ġ= Ġwhen Ġ( flag ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFlag . SE EN Ġ-> Ġmessage ListItem . is Read ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFlag . FLAG GED Ġ-> Ġmessage ListItem . is Star red ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġset Flag ( message ListItem , Ġflag , Ġ! flag State ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Move () Ġ{ ĊĠĠĠĠĠĠĠ Ġselected Message ?. let Ġ{ Ġmessage Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Move ( message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Archive () Ġ{ ĊĠĠĠĠĠĠĠ Ġselected Message ?. let Ġ{ Ġmessage Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Archive ( message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Copy () Ġ{ ĊĠĠĠĠĠĠĠ Ġselected Message ?. let Ġ{ Ġmessage Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Copy ( message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġis Out box : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Folder Ġ= Ġcurrent Folder Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcurrent Folder . database Id Ġ== Ġaccount !!. out box Folder Id ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval ĠisIn box : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Folder Ġ= Ġcurrent Folder Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcurrent Folder . database Id Ġ== Ġaccount !!. inbox Folder Id ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġis Remote Folder : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( local Search . is Manual Search Ġ|| Ġis Out box ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ(! messaging Controller . is Move Cap able ( account )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFor ĠPOP 3 Ġaccounts Ġonly Ġthe ĠIn box Ġis Ġa Ġremote Ġfolder . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisIn box ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġis Manual Search : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġlocal Search . is Manual Search ĊĊĠĠĠ Ġfun Ġshould Show Exp unge Action (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaccount Ġ= Ġthis . account Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn Ġaccount . exp unge Policy Ġ== ĠExp unge . EXP UN GE _ MAN U ALLY Ġ&& Ġmessaging Controller . supports Exp unge ( account ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Remote Search () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠRemote Ġsearch Ġis Ġuseless Ġwithout Ġthe Ġnetwork . ĊĠĠĠĠĠĠĠ Ġif Ġ( has Connectivity Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Remote Search Requested () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( activity , ĠgetText ( R . string . remote _ search _ un available _ no _ network ), ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġis Remote Search Allowed : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġis Manual Search Ġ&& Ġ! is Remote Search Ġ&& Ġis Single Folder Mode Ġ&& Ġaccount ?. is Allow Remote Search Ġ== Ġtrue ĊĊĠĠĠ Ġfun Ġon Search Requested (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfolder Id Ġ= Ġcurrent Folder ?. database Id ĊĠĠĠĠĠĠĠ Ġreturn Ġfragment Listener . start Search ( account , Ġfolder Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Message List ( message List Info : ĠMessage List Info ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmessage List Items Ġ= Ġmessage List Info . message List Items ĊĠĠĠĠĠĠĠ Ġif Ġ( is Thread Display Ġ&& Ġmessage List Items . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . go Back () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġswipe Refresh Layout . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġswipe Refresh Layout . isEnabled Ġ= Ġis Pull To Refresh Allowed ĊĊĠĠĠĠĠĠĠ Ġif Ġ( is Thread Display ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( message List Items . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstripped Subject Ġ= Ġmessage List Items . first (). subject ?. let Ġ{ ĠUtility . strip Subject ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthread Title Ġ= Ġif Ġ( stri pped Subject . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . general _ no _ subject ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstripped Subject ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Title () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġempty Ġthread Ġview Ġ-> Ġreturn Ġto Ġfull Ġmessage Ġlist ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcleanup Selected ( message List Items ) ĊĠĠĠĠĠĠĠ Ġadapter . selected Ġ= Ġselected ĊĊĠĠĠĠĠĠĠ Ġadapter . messages Ġ= Ġmessage List Items ĊĊĠĠĠĠĠĠĠ Ġreset Action Mode () ĊĠĠĠĠĠĠĠ Ġcompute Batch Direction () ĊĊĠĠĠĠĠĠĠ Ġis Load Finished Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġif Ġ( saved List State Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . restore List Position ( saved List State ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsaved List State Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfragment Listener . update Menu () ĊĊĠĠĠĠĠĠĠ Ġcurrent Folder ?. let Ġ{ Ġcurrent Folder Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Folder . more Messages Ġ= Ġmessage List Info . hasMore Messages ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Footer View () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcleanup Selected ( message List Items : ĠList < Message ListItem >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( selected . isEmpty ()) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġselected Ġ= Ġmessage List Items . as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . unique Id Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit Ġin Ġselected Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Mutable Set () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreset Action Mode () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( selected . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Mode ?. finish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( action Mode Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart And Prepare Action Mode () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġre calculate Selection Count () ĊĠĠĠĠĠĠĠ Ġupdate Action Mode Title () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart And Prepare Action Mode () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġrequire Activity () Ġas ĠAppCompatActivity ĊĠĠĠĠĠĠĠ Ġaction Mode Ġ= Ġactivity . start Support Action Mode ( action Mode Callback ) ĊĠĠĠĠĠĠĠ Ġaction Mode ?. invalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġre calculate Selection Count () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! show ing Th readed List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Count Ġ= Ġselected . size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġselected Count Ġ= Ġadapter . messages ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . unique Id Ġin Ġselected Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. sum By Ġ{ Ġit . thread Count . coerce At Least ( 1 ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremote Search Finished () Ġ{ ĊĠĠĠĠĠĠĠ Ġremote Search Future Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Active Message ( message Reference : ĠMessage Reference ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġactive Message Ġ= Ġmessage Reference ĊĊĠĠĠĠĠĠĠ Ġ// ĠRe load Ġmessage Ġlist Ġwith Ġmodified Ġquery Ġthat Ġalways Ġincludes Ġthe Ġactive Ġmessage ĊĠĠĠĠĠĠĠ Ġif Ġ( is Added ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Message List () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠRed raw Ġlist Ġimmediately ĊĠĠĠĠĠĠĠ Ġif Ġ(:: adapter . isInitialized ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . active Message Ġ= Ġactive Message ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġis Mark All As Read Supported : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġis Single Account Mode Ġ&& Ġis Single Folder Mode Ġ&& Ġ! is Out box ĊĊĠĠĠ Ġfun Ġconfirm Mark All As Read () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( K 9 . is Confirm Mark All Read ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Dialog ( R . id . dialog _ confirm _ mark _ all _ as _ read ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmark All As Read () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmark All As Read () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Mark All As Read Supported ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessaging Controller . mark All Messages Read ( account , Ġcurrent Folder !!. database Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġis Check Mail Supported : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġall Accounts Ġ|| Ġ! is Single Account Mode Ġ|| Ġ! is Single Folder Mode Ġ|| Ġis Remote Folder ĊĊĠĠĠ Ġprivate Ġval Ġis Check Mail Allowed : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ! is Manual Search Ġ&& Ġis Check Mail Supported ĊĊĠĠĠ Ġprivate Ġval Ġis Pull To Refresh Allowed : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġis Remote Search Allowed Ġ|| Ġis Check Mail Allowed ĊĊĠĠĠ Ġinternal Ġinner Ġclass ĠMessage List Activity Listener Ġ: ĠSimple Messaging Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlock Ġ= ĠAny () ĊĊĠĠĠĠĠĠĠ Ġ@ Gu arded By (" lock ") ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġfolder Completed Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġ@ Gu arded By (" lock ") ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġfolder Total Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġremote Search Failed ( folder Server Id : ĠString ?, Ġerr : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. let Ġ{ Ġactivity Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( activity , ĠR . string . remote _ search _ error , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġremote Search Started ( folder Id : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . progress ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . update Footer ( getString ( R . string . remote _ search _ sending _ query )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġenable Progress Indicator ( enable : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . progress ( enable ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġremote Search Finished ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfolder Id : ĠLong , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnum Results : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax Results : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġextra Results : ĠList < String >? ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . progress ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . remote Search Finished () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġextra SearchResults Ġ= Ġextra Results ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( extra Results Ġ!= Ġnull Ġ&& Ġextra Results . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . update Footer ( String . format ( getString ( R . string . load _ more _ messages _ fmt ), Ġmax Results )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . update Footer ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġremote Search Server Query Complete ( folder Id : ĠLong , Ġnum Results : ĠInt , Ġmax Results : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . progress ( true ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfooter Text Ġ= Ġif Ġ( max Results Ġ!= Ġ 0 Ġ&& Ġnum Results Ġ> Ġmax Results ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresources . get Quantity String ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . plurals . remote _ search _ download ing _ limited , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Results , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Results , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnum Results ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresources . get Quantity String ( R . plurals . remote _ search _ download ing , Ġnum Results , Ġnum Results ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . update Footer ( footer Text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinform User Of Status () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġinform User Of Status () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . refresh Title () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsynchronize Mailbox Started ( account : ĠAccount , Ġfolder Id : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( update For Me ( account , Ġfolder Id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . progress ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . folder Loading ( folder Id , Ġtrue ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( lock ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfolder Completed Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfolder Total Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinform User Of Status () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsynchronize Mailbox Headers Progress ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccount : ĠAccount , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfolder Server Id : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompleted : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtotal : ĠInt ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( lock ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfolder Completed Ġ= Ġcompleted ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfolder Total Ġ= Ġtotal ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġinform User Of Status () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsynchronize Mailbox Headers Finished ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccount : ĠAccount , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfolder Server Id : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtotal : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompleted : ĠInt ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( lock ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfolder Completed Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfolder Total Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġinform User Of Status () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsynchronize Mailbox Progress ( account : ĠAccount , Ġfolder Id : ĠLong , Ġcompleted : ĠInt , Ġtotal : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( lock ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfolder Completed Ġ= Ġcompleted ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfolder Total Ġ= Ġtotal ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġinform User Of Status () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsynchronize Mailbox Finished ( account : ĠAccount , Ġfolder Id : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( update For Me ( account , Ġfolder Id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . progress ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . folder Loading ( folder Id , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsynchronize Mailbox Failed ( account : ĠAccount , Ġfolder Id : ĠLong , Ġmessage : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( update For Me ( account , Ġfolder Id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . progress ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . folder Loading ( folder Id , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcheck Mail Finished ( context : ĠContext ?, Ġaccount : ĠAccount ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . progress ( false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġupdate For Me ( account : ĠAccount ?, Ġfolder Id : ĠLong ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( account Ġ== Ġnull Ġ|| Ġaccount . uuid Ġ! in Ġaccount Uuid s ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfolder Ids Ġ= Ġlocal Search . folder Ids ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfolder Ids . isEmpty () Ġ|| Ġfolder Id Ġin Ġfolder Ids ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Folder Completed (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( lock ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfolder Completed ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Folder Total (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( lock ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfolder Total ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġinner Ġclass ĠAction Mode Callback Ġ: ĠAction Mode . Callback Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġselect All : ĠMenuItem ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġmark As Read : ĠMenuItem ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġmark As Un read : ĠMenuItem ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġflag : ĠMenuItem ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġun flag : ĠMenuItem ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġdisable Mark As Read Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġdisable Flag Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Prepare Action Mode ( mode : ĠAction Mode , Ġmenu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect All Ġ= Ġmenu . find Item ( R . id . select _ all ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmark As Read Ġ= Ġmenu . find Item ( R . id . mark _ as _ read ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmark As Un read Ġ= Ġmenu . find Item ( R . id . mark _ as _ unread ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflag Ġ= Ġmenu . find Item ( R . id . flag ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġun flag Ġ= Ġmenu . find Item ( R . id . un flag ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġwe Ġdon 't Ġsupport Ġcross Ġaccount Ġactions Ġat m ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Single Account Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġshow Ġall ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . find Item ( R . id . move ). isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . find Item ( R . id . archive ). isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . find Item ( R . id . spam ). isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . find Item ( R . id . copy ). isVisible Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( account Uuid Ġin Ġaccount Uuid s For Selected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaccount Ġ= Ġpreferences . get Account ( account Uuid ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccount ?. let Ġ{ Ġset Context Capabilities ( it , Ġmenu ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġaccount Uuid s For Selected : ĠSet < String > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġadapter . messages . as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . unique Id Ġin Ġselected Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . account . uuid Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toSet () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Destroy Action Mode ( mode : ĠAction Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Mode Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect All Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmark As Read Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmark As Un read Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflag Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġun flag Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Selection State ( false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate Action Mode ( mode : ĠAction Mode , Ġmenu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmode . menu Inflater . inflate ( R . menu . message _ list _ context , Ġmenu ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Context Capabilities ( account , Ġmenu ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġset Context Capabilities ( account : ĠAccount ?, Ġmenu : ĠMenu ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Single Account Mode Ġ|| Ġaccount Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe Ġdon 't Ġsupport Ġcross - account Ġcopy / move Ġoperations Ġright Ġnow ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . find Item ( R . id . move ). isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . find Item ( R . id . copy ). isVisible Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġwe Ġcould Ġsupport Ġthe Ġarchive Ġand Ġspam Ġoperations Ġif Ġall Ġselected Ġmessages ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġbelong Ġto Ġnon - POP 3 Ġaccounts ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . find Item ( R . id . archive ). isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . find Item ( R . id . spam ). isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġhide Ġunsupported ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! messaging Controller . is Copy Cap able ( account )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . find Item ( R . id . copy ). isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! messaging Controller . is Move Cap able ( account )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . find Item ( R . id . move ). isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . find Item ( R . id . archive ). isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . find Item ( R . id . spam ). isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhide Archive Action Ġ= Ġis Single Folder Mode Ġ&& Ġcurrent Folder !!. database Id Ġ== Ġaccount . archive Folder Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( hide Archive Action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . find Item ( R . id . archive ). isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhide Sp am Action Ġ= Ġis Single Folder Mode Ġ&& Ġcurrent Folder !!. database Id Ġ== Ġaccount . spam Folder Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( hide Sp am Action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . find Item ( R . id . spam ). isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Out box ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . find Item ( R . id . mark _ as _ read ). isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . find Item ( R . id . mark _ as _ unread ). isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . find Item ( R . id . archive ). isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . find Item ( R . id . copy ). isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . find Item ( R . id . flag ). isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . find Item ( R . id . un flag ). isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . find Item ( R . id . spam ). isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . find Item ( R . id . move ). isVisible Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisable Mark As Read Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisable Flag Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( account . has Draft s Folder ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . find Item ( R . id . move _ to _ draft s ). isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġshow Select All ( show : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect All ?. isVisible Ġ= Ġshow ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġshow Mark As Read ( show : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! disable Mark As Read ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmark As Read ?. isVisible Ġ= Ġshow ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmark As Un read ?. isVisible Ġ= Ġ! show ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġshow Flag ( show : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! disable Flag ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflag ?. isVisible Ġ= Ġshow ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġun flag ?. isVisible Ġ= Ġ! show ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Action Item Clicked ( mode : ĠAction Mode , Ġitem : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIn Ġthe Ġfollowing Ġwe Ġassume Ġthat Ġwe Ġcan 't Ġmove Ġor Ġcopy Ġm ails Ġto Ġthe Ġsame Ġfolder . ĠAlso Ġthat Ġspam Ġisn 't ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġavailable Ġif Ġwe Ġare Ġin Ġthe Ġspam Ġfolder , Ġsame Ġfor Ġarchive . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . delete Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessages Ġ= Ġchecked Messages ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonDelete ( messages ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Count Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . mark _ as _ read Ġ-> Ġset Flag For Selected ( Flag . SE EN , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . mark _ as _ unread Ġ-> Ġset Flag For Selected ( Flag . SE EN , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . flag Ġ-> Ġset Flag For Selected ( Flag . FLAG GED , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . un flag Ġ-> Ġset Flag For Selected ( Flag . FLAG GED , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . select _ all Ġ-> Ġselect All () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . archive Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġonly Ġif Ġthe Ġaccount Ġsupports Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Archive ( checked Messages ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Count Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . spam Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Sp am ( checked Messages ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Count Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . move Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Move ( checked Messages ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Count Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . move _ to _ draft s Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon MoveTo Draft s Folder ( checked Messages ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Count Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . copy Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Copy ( checked Messages ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Count Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( selected Count Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmode . finish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġclass ĠFooter ViewHolder ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmain : ĠTextView Ġ= Ġview . findViewById ( R . id . main _ text ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġenum Ġclass ĠFolder Operation Ġ{ ĊĠĠĠĠĠĠĠ ĠCOPY , ĠMOVE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠMessage List Fragment Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġset Message List Progress Enabled ( enable : ĠBoolean ) ĊĠĠĠĠĠĠĠ Ġfun Ġset Message List Progress ( level : ĠInt ) ĊĠĠĠĠĠĠĠ Ġfun Ġshow Thread ( account : ĠAccount , Ġthread Root Id : ĠLong ) ĊĠĠĠĠĠĠĠ Ġfun Ġopen Message ( message Reference : ĠMessage Reference ) ĊĠĠĠĠĠĠĠ Ġfun Ġset Message List Title ( title : ĠString ) ĊĠĠĠĠĠĠĠ Ġfun Ġon Compose ( account : ĠAccount ?) ĊĠĠĠĠĠĠĠ Ġfun Ġstart Search ( account : ĠAccount ?, Ġfolder Id : ĠLong ?): ĠBoolean ĊĠĠĠĠĠĠĠ Ġfun Ġremote Search Started () ĊĠĠĠĠĠĠĠ Ġfun Ġgo Back () ĊĠĠĠĠĠĠĠ Ġfun Ġupdate Menu () ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġval ĠMAX _ PROGRESS Ġ= Ġ 1 0 0 0 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠACT IVITY _ CH OOSE _ FOLDER _ MOVE Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠACT IVITY _ CH OOSE _ FOLDER _ COPY Ġ= Ġ 2 ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠARG _ SEARCH Ġ= Ġ" search Object " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠARG _ TH RE ADED _ LIST Ġ= Ġ" show ing Th readed List " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠARG _ IS _ THREAD _ DISPLAY Ġ= Ġ" is Th readed Display " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSTATE _ SELECTED _ MESSAGES Ġ= Ġ" selected Messages " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSTATE _ ACTIVE _ MESSAGE Ġ= Ġ" active Message " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSTATE _ REMOTE _ SEARCH _ PER FOR MED Ġ= Ġ" remote Search Performed " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSTATE _ MESSAGE _ LIST Ġ= Ġ" list State " ĊĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( search : ĠLocal Search , Ġis Thread Display : ĠBoolean , Ġth readed List : ĠBoolean ): ĠMessage List Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠMessage List Fragment (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= Ġbundle Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠARG _ SEARCH Ġto Ġsearch , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠARG _ IS _ THREAD _ DISPLAY Ġto Ġis Thread Display , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠARG _ TH RE ADED _ LIST Ġto Ġth readed List , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ