package Ġcom . fs ck . k 9 . ui . message list Ċ Ċ import Ġandroid . database . Cursor Ċ import Ġcom . fs ck . k 9 . Preferences Ċ import Ġcom . fs ck . k 9 . fragment . ML F Projection Info Ċ import Ġcom . fs ck . k 9 . helper . Message Helper Ċ import Ġcom . fs ck . k 9 . mail . Address Ċ import Ġcom . fs ck . k 9 . mail store . Database Preview Type Ċ Ċ class ĠMessage List Extractor ( ĊĠĠĠ Ġprivate Ġval Ġpreferences : ĠPreferences , ĊĠĠĠ Ġprivate Ġval Ġmessage Helper : ĠMessage Helper Ċ ) Ġ{ ĊĠĠĠ Ġfun Ġextract Message List ( cursor : ĠCursor , Ġunique Id Column : ĠInt , Ġthread Count Included : ĠBoolean ): ĠList < Message ListItem > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcursor . map Ġ{ Ġextract Message ListItem ( it , Ġunique Id Column , Ġthread Count Included ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġextract Message ListItem ( ĊĠĠĠĠĠĠĠ Ġcursor : ĠCursor , ĊĠĠĠĠĠĠĠ Ġunique Id Column : ĠInt , ĊĠĠĠĠĠĠĠ Ġthread Count Included : ĠBoolean ĊĠĠĠ Ġ): ĠMessage ListItem Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġcursor . position ĊĠĠĠĠĠĠĠ Ġval Ġaccount Uuid Ġ= Ġcursor . getString ( ML F Projection Info . ACCOUNT _ UUID _ COLUMN ) ĊĠĠĠĠĠĠĠ Ġval Ġaccount Ġ= Ġpreferences . get Account ( account Uuid ) ĊĠĠĠĠĠĠĠ Ġval Ġfrom List Ġ= Ġcursor . getString ( ML F Projection Info . SEND ER _ LIST _ COLUMN ) ĊĠĠĠĠĠĠĠ Ġval Ġto List Ġ= Ġcursor . getString ( ML F Projection Info . TO _ LIST _ COLUMN ) ĊĠĠĠĠĠĠĠ Ġval Ġcc List Ġ= Ġcursor . getString ( ML F Projection Info . CC _ LIST _ COLUMN ) ĊĠĠĠĠĠĠĠ Ġval Ġfrom Addresses Ġ= ĠAddress . unpack ( fromList ) ĊĠĠĠĠĠĠĠ Ġval Ġto Addresses Ġ= ĠAddress . unpack ( toList ) ĊĠĠĠĠĠĠĠ Ġval Ġcc Addresses Ġ= ĠAddress . unpack ( cc List ) ĊĠĠĠĠĠĠĠ Ġval Ġfrom Me Ġ= Ġmessage Helper . to Me ( account , Ġfrom Addresses ) ĊĠĠĠĠĠĠĠ Ġval Ġto Me Ġ= Ġmessage Helper . to Me ( account , Ġto Addresses ) ĊĠĠĠĠĠĠĠ Ġval Ġcc Me Ġ= Ġmessage Helper . to Me ( account , Ġcc Addresses ) ĊĠĠĠĠĠĠĠ Ġval Ġcounter Party Address Ġ= Ġget Counter Party Address ( from Me , Ġto Addresses , Ġcc Addresses , Ġfrom Addresses ) ĊĠĠĠĠĠĠĠ Ġval ĠdisplayName Ġ= Ġmessage Helper . get DisplayName ( account , Ġfrom Addresses , Ġto Addresses ). toString () ĊĠĠĠĠĠĠĠ Ġval Ġmessage Date Ġ= Ġcursor . getLong ( ML F Projection Info . DATE _ COLUMN ) ĊĠĠĠĠĠĠĠ Ġval Ġthread Count Ġ= Ġif Ġ( thread Count Included ) Ġcursor . getInt ( ML F Projection Info . THREAD _ COUNT _ COLUMN ) Ġelse Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġsubject Ġ= Ġcursor . getString ( ML F Projection Info . SUBJECT _ COLUMN ) ĊĠĠĠĠĠĠĠ Ġval Ġis Read Ġ= Ġcursor . getBoolean ( ML F Projection Info . READ _ COLUMN ) ĊĠĠĠĠĠĠĠ Ġval Ġis Star red Ġ= Ġcursor . getBoolean ( ML F Projection Info . FLAG GED _ COLUMN ) ĊĠĠĠĠĠĠĠ Ġval Ġis Answer ed Ġ= Ġcursor . getBoolean ( ML F Projection Info . AN SW ER ED _ COLUMN ) ĊĠĠĠĠĠĠĠ Ġval Ġis Forwarded Ġ= Ġcursor . getBoolean ( ML F Projection Info . FOR WAR DED _ COLUMN ) ĊĠĠĠĠĠĠĠ Ġval Ġhas Attachments Ġ= Ġcursor . getInt ( ML F Projection Info . ATTACHMENT _ COUNT _ COLUMN ) Ġ> Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġpreview TypeString Ġ= Ġcursor . getString ( ML F Projection Info . PRE VIEW _ TYPE _ COLUMN ) ĊĠĠĠĠĠĠĠ Ġval Ġpreview Type Ġ= ĠDatabase Preview Type . from Database Value ( preview TypeString ) ĊĠĠĠĠĠĠĠ Ġval Ġis Message Encrypted Ġ= Ġpreview Type Ġ== ĠDatabase Preview Type . ENCRYPT ED ĊĠĠĠĠĠĠĠ Ġval Ġpreview Text Ġ= Ġget Preview Text ( preview Type , Ġcursor ) ĊĠĠĠĠĠĠĠ Ġval Ġunique Id Ġ= Ġcursor . getLong ( unique Id Column ) ĊĠĠĠĠĠĠĠ Ġval Ġfolder Server Id Ġ= Ġcursor . getString ( ML F Projection Info . FOLDER _ SERVER _ ID _ COLUMN ) ĊĠĠĠĠĠĠĠ Ġval Ġmessage Uid Ġ= Ġcursor . getString ( ML F Projection Info . UID _ COLUMN ) ĊĠĠĠĠĠĠĠ Ġval Ġdatabase Id Ġ= Ġcursor . getLong ( ML F Projection Info . ID _ COLUMN ) ĊĠĠĠĠĠĠĠ Ġval Ġsender Address Ġ= Ġfrom Addresses . get OrNull ( 0 )?. address ĊĠĠĠĠĠĠĠ Ġval Ġthread Root Ġ= Ġcursor . getLong ( ML F Projection Info . THREAD _ ROOT _ COLUMN ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠMessage ListItem ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccount , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsubject , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthread Count , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Date , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdisplayName Ġas ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcounter Party Address , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Me , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Me , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcc Me , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreview Text , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Message Encrypted , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Read , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Star red , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Answer ed , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Forwarded , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Attachments , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunique Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfolder Server Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Uid , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender Address , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthread Root ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Counter Party Address ( ĊĠĠĠĠĠĠĠ Ġfrom Me : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġto Addresses : ĠArray < Address >, ĊĠĠĠĠĠĠĠ Ġcc Addresses : ĠArray < Address >, ĊĠĠĠĠĠĠĠ Ġfrom Addresses : ĠArray < Address > ĊĠĠĠ Ġ): ĠAddress ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Me Ġ&& Ġto Addresses . isNotEmpty () Ġ-> Ġto Addresses [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Me Ġ&& Ġcc Addresses . isNotEmpty () Ġ-> Ġcc Addresses [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Addresses . isNotEmpty () Ġ-> Ġfrom Addresses [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Preview Text ( preview Type : ĠDatabase Preview Type ?, Ġcursor : ĠCursor ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( preview Type Ġ== ĠDatabase Preview Type . TEXT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . getString ( ML F Projection Info . PRE VIEW _ COLUMN ) Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠCursor . getBoolean ( column Index : ĠInt ): ĠBoolean Ġ= Ġget Int ( column Index ) Ġ== Ġ 1 ĊĊĠĠĠ Ġprivate Ġinline Ġfun Ġ< T > ĠCursor . map ( block : Ġ( Cursor ) Ġ-> ĠT ): ĠList < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠList ( count ) Ġ{ Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmove To Position ( index ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ