package Ġcom . work . l az xy . write away . ui . activity Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . DialogInterface Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . Editable Ċ import Ġandroid . text . Input Filter Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . text . Text Watcher Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ Ċ import Ġcom . work . l az xy . write away . R Ċ import Ġcom . work . l az xy . write away . common . Config Manager Ċ import Ġcom . work . l az xy . write away . common . Constant Ċ import Ġcom . work . l az xy . write away . entity . Note Entity Ċ import Ġcom . work . l az xy . write away . mvp frame . base . Base Frame Activity Ċ import Ġcom . work . l az xy . write away . mvp frame . concrete . note . Note Contract Ċ import Ġcom . work . l az xy . write away . mvp frame . concrete . note . Note Model Ċ import Ġcom . work . l az xy . write away . mvp frame . concrete . note . Note Presenter Ċ import Ġcom . work . l az xy . write away . ui . filter . Edit Length Input Filter Ċ import Ġcom . work . l az xy . write away . ui . filter . Line Break Input Filter Ċ import Ġcom . work . l az xy . write away . ui . widget . Progress Dialog Ċ import Ġcom . work . l az xy . write away . utils .* Ċ Ċ import Ġkotlinx . android . synt hetic . main . activity _ note .* Ċ import Ġkotlinx . coroutines .* Ċ import Ġkotlin . coroutines . resume Ċ import Ġkotlin . coroutines . suspend Coroutine Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠL az xy Ġon Ġ 2 0 1 7 / 4 / 2 7 . Ċ Ġ*/ Ċ Ċ class ĠNote Activity Ġ: ĠBase Frame Activity < Note Presenter , ĠNote Model >(), ĠNote Contract . View Ġ{ ĊĠĠĠ Ġprivate Ġval Ġm Progress : ĠProgress Dialog Ġby Ġlazy Ġ{ ĠProgress Dialog ( this ) Ġ} ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Standard Note : ĠNote Entity ĊĠĠĠ Ġprivate Ġvar Ġm Old Length : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġm Can Re voke Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġm Should Quit Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġm Is New Note Ġ= Ġfalse ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ note ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġnote Ġ= Ġintent . get Serializable Extra ( Constant . Extra . EXTRA _ NOTE ) Ġas ĠNote Entity ? ĊĠĠĠĠĠĠĠ Ġif Ġ( note Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// æĸ°å»º ç¬Ķ è®° çļĦ æĥħåĨµ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnote Ġ= Ġcreate New Note () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Is New Note Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Standard Note Ġ= Ġnote ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit View () Ġ{ ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. title Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Display Home As Up Enabled ( true ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! TextUtils . isEmpty ( m Standard Note . title )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġet Note Title . setText ( m Standard Note . title ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġet Note Title . hint Ġ= Ġresources . getString ( R . string . no _ title ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġet Note Title . clear Focus () ĊĠĠĠĠĠĠĠ Ġtv Edit Time ?. text Ġ= ĠCalendar Utils . getTime From Timestamp ( m Standard Note . last Edit Time ) ĊĠĠĠĠĠĠĠ Ġset Can Re voke ( false ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġtoolbar ?. set Navigation OnClickListener Ġ{ Ġthis @ Note Activity . on Back Pressed () Ġ} ĊĊĠĠĠĠĠĠĠ Ġpad Note Content . add TextChanged Listener ( object Ġ: ĠText Watcher Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( s : ĠCharSequence , Ġstart : ĠInt , Ġcount : ĠInt , Ġafter : ĠInt ) Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence , Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Can Re voke ( pad Note Content . is Can Re voke ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġet Note Title . filters Ġ= ĠarrayOf < Input Filter >( Edit Length Input Filter ( 3 2 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Load () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Presenter . getContent ( m Standard Note . filePath ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . menu _ note , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Prepare Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Can Re voke ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . find Item ( R . id . menu _ note _ revoke ). isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . find Item ( R . id . menu _ note _ save ). isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . find Item ( R . id . menu _ note _ revoke ). isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . find Item ( R . id . menu _ note _ save ). isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Prepare Options Menu ( menu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ note _ revoke Ġ-> Ġpad Note Content . revoke () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ note _ clear Ġ-> Ġclear Note () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ note _ save Ġ-> Ġsave Note () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ note _ save _ as _ pic Ġ-> Ġsave As Picture () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( check Note Changed ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// å½ĵ æĸĩæľ¬ æľī æĶ¹ åĬ¨ æĹ¶ ï¼Į å¼¹ çªĹ æıĲç¤º ï¼Į ç¡®è®¤ åĲİ ä¿ĿåŃĺ æĸĩæľ¬ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUI Utils . show Simple AlertDialog ( this , Ġnull , Ġ" æĸĩæľ¬ æľī ä¿®æĶ¹ ï¼Į éľĢè¦ģ ä¿ĿåŃĺ åĲĹ ï¼Ł ", Ġ" ä¿ĿåŃĺ ", Ġ" åıĸæ¶Ī ", Ġ{ Ġdialog , Ġwhich Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= Ġpad Note Content . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave Note Info ( m Standard Note . filePath , Ġcontent , Ġet Note Title . text . toString (), ĠStringUtils . get Preview ( content ), Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ġ{ Ġ_, Ġ_ Ġ-> Ġsuper @ Note Activity . on Back Pressed () Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// æŃ£ æĸĩ æĹł æĶ¹ åĬ¨ æĹ¶ ï¼Į åĪ¤æĸŃ æĺ¯åĲ¦ ä¿ĿåŃĺ æłĩé¢ĺ ä¿¡æģ¯ ï¼Į çĦ¶åĲİ çĽ´æİ¥ éĢĢåĩº å½ĵåīį é¡µéĿ¢ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( et Note Title . text . toString () Ġ!= Ġm Standard Note . title ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ä¸º ä¸Ģä¸ª æĸ° ç¬Ķ è®° æĹ¶ å¼º è¿ « çĶŁæĪĲ ä¸Ģä¸ª ç©º çĻ½ çļĦ æĸ° æĸĩæľ¬ æĸĩä»¶ Ġ åĲ¦åĪĻ åıª ä¿ĿåŃĺ æłĩé¢ĺ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= Ġif Ġ( m Is New Note ) Ġ"" Ġelse Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// åıª æĽ´æĶ¹ æłĩé¢ĺ ä¿¡æģ¯ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave Note Info ( m Standard Note . filePath , Ġcontent , Ġet Note Title . text . toString (), Ġm Standard Note . preview , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġclear Note () Ġ{ ĊĠĠĠĠĠĠĠ ĠUI Utils . show Simple AlertDialog ( this , Ġnull , Ġ" ç¡®è®¤ æ¸ħ ç©º æīĢæľī åĨħå®¹ åĲĹ ï¼Ł ", Ġ" æ¸ħ ç©º ", Ġ" åıĸæ¶Ī ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDialog Interface . OnClickListener Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// è¿ĻéĩĮ ä¼ļ è¢« è®¤ä¸º æĺ¯ä¸Ģä¸ª Add æĵįä½ľ ï¼Į èĢĮä¸įæĺ¯ æĽ¿æį¢ ï¼Į æīĢä»¥ æ²¡ åĬŀ æ³ķ å°Ĩ åħ¶ åĬłåħ¥ åĽŀ éĢĢ æłĪ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpad Note Content . setContent ( Line Break Input Filter . IND ENT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpad Note Content . setSelection ( pad Note Content . length ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpad Note Content . clear Re voke Stack () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Can Re voke ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsave Note () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= Ġpad Note Content . text . toString () ĊĠĠĠĠĠĠĠ Ġsave Note Info ( m Standard Note . filePath , Ġcontent , Ġet Note Title . text . toString (), ĠStringUtils . get Preview ( content ), Ġfalse ) ĊĠĠĠĠĠĠĠ Ġset Can Re voke ( false ) ĊĠĠĠĠĠĠĠ Ġpad Note Content . clear Focus () ĊĠĠĠĠĠĠĠ ĠUI Utils . hide Input Method ( this , Ġpad Note Content )// éļĲèĹı è¾ĵåħ¥ æ³ķ éĶ® çĽĺ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsave As Picture () Ġ{ ĊĠĠĠĠĠĠĠ ĠUI Utils . show Simple AlertDialog ( this , Ġ" æıĲç¤º ", Ġ" è¦ģ æł¹æį® å½ĵåīį åĨħå®¹ çĶŁæĪĲ éķ¿ åĽ¾ åĲĹ ï¼Ł ", Ġ" ç¡®å®ļ ", Ġ"", Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsave To Bitmap () ĊĠĠĠĠĠĠĠ Ġ}, Ġ{ Ġ_, Ġ_ Ġ-> Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æł¡éªĮ æĸĩæľ¬ æĺ¯åĲ¦ æľī æĶ¹ åĬ¨ ĊĠĠĠĠ Ġ* Ġ@ return Ġtrue ï¼ļ æĸĩæľ¬ ç»ı è¿ĩ ä¿®æĶ¹ Ġfalse ï¼ļ æĸĩæľ¬ æľª ç»ı ä¿®æĶ¹ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġcheck Note Changed (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// è¿ĻéĩĮ å¯¹ æĸĩæľ¬ ä¿®æĶ¹ çļĦ åĪ¤æĸŃ æľī ä¸Ģç§į æĥħåĨµä¸ĭ ä¼ļ å¤± æķĪ ï¼Į åį³ çĶ¨æĪ· ä¿®æĶ¹ äºĨ è¶ħè¿ĩ åĨħå®¹ æ¬¡æķ° è¾¾ åĪ° ä¸Ĭ éĻĲ åĲİ åıĪ æŃ£ å¥½ åĽŀ éĢĢ åĪ° åĽŀ éĢĢ æłĪ æ¸ħ ç©º æĹ¶ ï¼Į é¡µéĿ¢ ä¸įä¼ļ åĩºçİ° ä¿ĿåŃĺ æłĩè®° ï¼Į ĊĠĠĠĠĠĠĠ Ġ// Ġ èĭ¥ æŃ¤ æĹ¶ æĸĩæľ¬ éķ¿åº¦ æģ ° å¥½ çŃīäºİ åĪĿå§ĭ æĸĩæľ¬ éķ¿åº¦ æĹ¶ ï¼Į åĪĻ ä¸Ķ éĢĢåĩº ä¿ĿåŃĺ ä¸įä¼ļ è¢« è§¦åıĳ ĊĠĠĠĠĠĠĠ Ġreturn Ġm Can Re voke Ġ|| Ġm Old Length Ġ!= Ġpad Note Content . length () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsave Note Info ( path : ĠString , Ġcontent : ĠString ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle : ĠString , Ġpreview : ĠString , Ġshould Quit : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Presenter . save All ( path , Ġcontent , Ġtitle , Ġpreview ) ĊĠĠĠĠĠĠĠ Ġm Should Quit Ġ= Ġshould Quit ĊĠĠĠĠĠĠĠ Ġm Standard Note Ġ= ĠNote Entity ( title , Ġpreview , Ġpath , ĠSystem . currentTimeMillis ()) ĊĠĠĠĠĠĠĠ Ġm Is New Note Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġm Old Length Ġ= Ġcontent ?. length Ġ?: Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate New Note (): Note Entity { ĊĠĠĠĠĠĠĠ Ġreturn ĠNote Entity ("", Ġ"", ĠFileUtils . create File With Time ( Config Manager . file Saved Path ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . currentTimeMillis ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Content ( content : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpad Note Content . setContent ( content ) ĊĠĠĠĠĠĠĠ Ġif Ġ( pad Note Content . text . toString () Ġ== ĠLine Break Input Filter . IND ENT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpad Note Content . setSelection ( pad Note Content . length ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpad Note Content . request Focus () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Old Length Ġ= Ġpad Note Content . length () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Save Successful ( note : ĠNote Entity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Short Toast (" ä¿ĿåŃĺ æĪĲåĬŁ ") ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent () ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( Constant . Extra . EXTRA _ NOTE , Ġnote ) ĊĠĠĠĠĠĠĠ Ġset Result ( Activity . RESULT _ OK , Ġintent ) ĊĠĠĠĠĠĠĠ Ġm Standard Note Ġ= Ġnote ĊĠĠĠĠĠĠĠ Ġif Ġ( m Should Quit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Can Re voke ( can Re voke : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Can Re voke Ġ= Ġcan Re voke ĊĠĠĠĠĠĠĠ Ġinvalidate Options Menu () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsave To Bitmap () Ġ{ ĊĠĠĠĠĠĠĠ ĠGlobal Scope . launch ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprogress Ġ= ĠProgress Dialog ( this @ Note Activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress . show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġasync Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgenerate Bitmap () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result . await ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUI Utils . show Simple AlertDialog ( this @ Note Activity , Ġ" æıĲç¤º ", Ġ" åĽ¾çīĩ çĶŁæĪĲ æĪĲåĬŁ ï¼ģ ", Ġ" ç¡®è®¤ ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUI Utils . show Simple AlertDialog ( this @ Note Activity , Ġ" æıĲç¤º ", Ġ" åĽ¾çīĩ çĶŁæĪĲ å¤±è´¥ ï¼Į è¯· éĩį è¯ķ ï¼ģ ", Ġ" ç¡®è®¤ ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress . hide () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġgenerate Bitmap () Ġ= Ġsuspend Coroutine < Boolean > Ġ{ ĊĠĠĠĠĠĠĠ ĠCor outine Scope ( Dispatch ers . IO ). launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠNote Snapshot Generator . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setText ( pad Note Content . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( et Note Title . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . resume ( builder . build ( this @ Note Activity ). generate ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Request Start () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Progress . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Request Error ( msg : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Progress . dismiss () ĊĠĠĠĠĠĠĠ Ġshow Short Toast ( msg ) ĊĠĠĠĠĠĠĠ Ġet Note Title . clear Focus () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Request End () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Progress . dismiss () ĊĠĠĠ Ġ} Ċ } Ċ