package Ġio . github . wy kop mob il ny . ui . modules . input Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . provider . Media Store Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . input method . Input Method Manager Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . core . view . isVisible Ċ import Ġio . github . wy kop mob il ny . R Ċ import Ġio . github . wy kop mob il ny . api . suggest . Suggest Api Ċ import Ġio . github . wy kop mob il ny . base . Base Activity Ċ import Ġio . github . wy kop mob il ny . databinding . Activity Write Comment Binding Ċ import Ġio . github . wy kop mob il ny . ui . dialogs . exit Confirmation Dialog Ċ import Ġio . github . wy kop mob il ny . ui . suggestions . Hash Tags Suggestions Adapter Ċ import Ġio . github . wy kop mob il ny . ui . suggestions . Users Suggestions Adapter Ċ import Ġio . github . wy kop mob il ny . ui . suggestions . W yk op Suggestions Tokenizer Ċ import Ġio . github . wy kop mob il ny . ui . widgets . ZERO _ WIDTH _ SPACE Ċ import Ġio . github . wy kop mob il ny . ui . widgets . markdown toolbar . Markdown Toolbar Listener Ċ import Ġio . github . wy kop mob il ny . utils . text view . strip W yk op Formatting Ċ import Ġio . github . wy kop mob il ny . utils . view Binding Ċ Ċ abstract Ġclass ĠBase Input Activity < T Ġ: ĠBase Input Presenter > Ġ: ĠBase Activity (), ĠBase Input View , ĠMarkdown Toolbar Listener Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEX TRA _ RECE IVER Ġ= Ġ" EXTRA _ RECE IVER " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEX TRA _ BODY Ġ= Ġ" EXTRA _ BODY " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEX TRA _ EMB ED Ġ= Ġ" EXTRA _ EMB ED " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠREQUEST _ CODE Ġ= Ġ 1 0 6 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEDIT _ ENTRY _ COMMENT Ġ= Ġ 1 0 7 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEDIT _ ENTRY Ġ= Ġ 1 0 8 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEDIT _ LINK _ COMMENT Ġ= Ġ 1 0 9 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠUSER _ ACTION _ INSERT _ PH OTO Ġ= Ġ 1 4 2 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠUSER _ ACTION _ INSERT _ PH OTO _ CAMERA Ġ= Ġ 1 4 3 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġvar Ġsuggestion Api : ĠSuggest Api ĊĠĠĠ Ġabstract Ġvar Ġpresenter : ĠT ĊĊĠĠĠ Ġprivate Ġval Ġusers Suggestion Adapter Ġby Ġlazy Ġ{ ĠUsers Suggestions Adapter ( this , Ġsuggestion Api ) Ġ} ĊĠĠĠ Ġprivate Ġval Ġhash Tags Suggestion Adapter Ġby Ġlazy Ġ{ ĠHash Tags Suggestions Adapter ( this , Ġsuggestion Api ) Ġ} ĊĊĠĠĠ Ġlateinit Ġvar Ġcontent Uri : ĠUri ĊĊĠĠĠ Ġoverride Ġvar Ġtext Body : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( binding . markup Toolbar . photoUrl Ġ!= Ġnull Ġ|| Ġbinding . markup Toolbar . photo Ġ!= Ġnull ) Ġ&& Ġbinding . body . text . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠZERO _ WIDTH _ SPACE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . body . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . body . setText ( value , ĠTextView . Buffer Type . EDIT ABLE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġvar Ġselection Start : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġbinding . body . selection Start ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . body . setSelection ( value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġvar Ġselection End : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġbinding . body . selection End ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . body . setSelection ( value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsetup Suggestions () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . body . set Tokenizer ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠW yk op Suggestions Tokenizer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( binding . body . adapter Ġ! is ĠUsers Suggestions Adapter ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . body . setAdapter ( users Suggestion Adapter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( binding . body . adapter Ġ! is ĠHash Tags Suggestions Adapter ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . body . setAdapter ( hash Tags Suggestion Adapter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġbinding . body . threshold Ġ= Ġ 3 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġval Ġbinding Ġby Ġview Binding ( Activity Write Comment Binding :: inflate ) ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( binding . toolbar . toolbar ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Display Home As Up Enabled ( true ) ĊĠĠĠĠĠĠĠ Ġintent . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetString Extra ( EXTRA _ RECE IVER )?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Body Ġ+= Ġ"$ this : Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselection Start Ġ= Ġthis . length Ġ+ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetString Extra ( EXTRA _ BODY )?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ@ TODO ĠReplace Ġit Ġwith Ġsome Ġregex Ġor Ġparser , Ġits Ġway Ġtoo Ġhack y Ġnow ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Body Ġ+= Ġstrip W yk op Formatting () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselection Start Ġ= Ġif Ġ(! startsWith ("# ")) Ġtext Body . length Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Body Ġ= Ġ"\ n $ text Body " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . markup Toolbar . markdown Listener Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġbinding . markup Toolbar . floating ImageView Ġ= Ġbinding . floating ImageView ĊĊĠĠĠĠĠĠĠ Ġ// Ġshow Ġfocus ĊĠĠĠĠĠĠĠ Ġbinding . body . request Focus () ĊĠĠĠĠĠĠĠ Ġval Ġimm Ġ= Ġget System Service ( Context . INPUT _ METHOD _ SERVICE ) Ġas ĠInput Method Manager ĊĠĠĠĠĠĠĠ Ġimm . show Soft Input ( binding . body , ĠInput Method Manager . SHOW _ IMP LICIT ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Selection ( start : ĠInt , Ġend : ĠInt ) Ġ= Ġbinding . body . setSelection ( start , Ġend ) ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . menu _ add _ comment , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . send Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtyped InputStream Ġ= Ġbinding . markup Toolbar . get W yk op Image File () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( typed InputStream Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . send With Photo ( typed InputStream , Ġbinding . markup Toolbar . contains Ad ult Content ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . send With Photo Url ( binding . markup Toolbar . photoUrl , Ġbinding . markup Toolbar . contains Ad ult Content ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . id . home Ġ-> Ġon Back Pressed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġif Ġ( result Code Ġ== ĠActivity . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( request Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGallery Ġcho oser 's Ġcallback ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUSER _ ACTION _ INSERT _ PH OTO Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . markup Toolbar . photo Ġ= Ġdata ?. data ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUSER _ ACTION _ INSERT _ PH OTO _ CAMERA Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . markup Toolbar . photo Ġ= Ġcontent Uri ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠShows Ġ" sending Ġentry " Ġprogress Ġin Ġnotification ĊĠĠĠ Ġoverride Ġvar Ġshow ProgressBar : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġbinding . progress Bar . isVisible ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . progress Bar . isVisible Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . content View . isVisible Ġ= Ġ! value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . markup Toolbar . isVisible Ġ= Ġ! value ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġexit Activity () Ġ{ ĊĠĠĠĠĠĠĠ Ġset Result ( Activity . RESULT _ OK ) ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! binding . markup Toolbar . has User Edited Content ()) Ġexit Activity () ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexit Confirmation Dialog ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexit Activity () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ?. show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġopen Gallery Image Chooser () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent () ĊĠĠĠĠĠĠĠ Ġintent . type Ġ= Ġ" image /* " ĊĠĠĠĠĠĠĠ Ġintent . action Ġ= ĠIntent . ACTION _ GET _ CONTENT ĊĠĠĠĠĠĠĠ ĠstartActivity For Result ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIntent . create Chooser ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . insert _ photo _ gal ery ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUSER _ ACTION _ INSERT _ PH OTO ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġopen Camera ( uri : ĠUri ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontent Uri Ġ= Ġuri ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Media Store . ACTION _ IMAGE _ CAPTURE ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( Media Store . EXTRA _ OUTPUT , Ġuri ) ĊĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , ĠUSER _ ACTION _ INSERT _ PH OTO _ CAMERA ) ĊĠĠĠ Ġ} Ċ } Ċ