package Ġorg . syn k note Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . text . Editable Ċ import Ġandroid . text . Text Watcher Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . view . WindowManager Ċ import Ġandroid . view . input method . Input Method Manager Ċ import Ġcom . one gravity . rt editor . RT Manager Ċ import Ġcom . one gravity . rt editor . api . RT Api Ċ import Ġcom . one gravity . rt editor . api . RT Media Factory Impl Ċ import Ġcom . one gravity . rt editor . api . RT Proxy Impl Ċ import Ġcom . one gravity . rt editor . effects . Effects . ALL _ EFFECT S Ċ import Ġkotlinx . android . synt hetic . main . activity _ editor .* Ċ import Ġru . not ies . mark won . Mark won Ċ import Ġorg . syn k note . files . Document Ċ import Ġandroid . graphics . Type face Ċ import Ġkotlinx . android . synt hetic . main . activity _ normal _ editor .* Ċ import Ġorg . syn k note . markdown . Lexer Ċ import Ġorg . syn k note . misc .* ĊĊ Ċ class ĠMarkdown Editor Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġedited Since Last Save Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġnote Id Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġsalt Ġ= Ġ"" ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠTheme Manager ( this , ĠActivity Types . EDITOR ). load Theme () ĊĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ editor ) ĊĠĠĠĠĠĠĠ Ġwindow . set Soft Input Mode ( WindowManager . LayoutParams . SOFT _ INPUT _ ADJ UST _ RE SIZE ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠFont ĊĠĠĠĠĠĠĠ Ġval Ġtype face Ġ= ĠType face . createFrom Asset ( assets , Ġ" fonts / d roid sans . ttf ") ĊĠĠĠĠĠĠĠ Ġmarkdown _ editor . type face Ġ= Ġtype face ĊĊĠĠĠĠĠĠĠ Ġ// ĠBack Ġbutton ĊĠĠĠĠĠĠĠ Ġval Ġaction Bar Ġ= Ġsupport ActionBar ĊĠĠĠĠĠĠĠ Ġif Ġ( action Bar Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Bar . set Display Home As Up Enabled ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Bar . elevation Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠCreate ĠRT Manager ĊĠĠĠĠĠĠĠ Ġval Ġrt Api Ġ= ĠRT Api ( this , ĠRT Proxy Impl ( this ), ĠRT Media Factory Impl ( this , Ġtrue )) ĊĠĠĠĠĠĠĠ Ġval Ġrt Manager Ġ= ĠRT Manager ( rt Api , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġrt Manager . register Editor ( markdown _ editor , Ġtrue ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠFill Ġwith Ġcontent ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġintent . getString Extra (" title ") ĊĠĠĠĠĠĠĠ Ġnote Id Ġ= Ġintent . getString Extra (" note Id ") ĊĠĠĠĠĠĠĠ Ġsalt Ġ= Ġintent . getString Extra (" salt ") ĊĠĠĠĠĠĠĠ Ġmarkdown _ editor . setText ( intent . getString Extra (" content ")) ĊĊĠĠĠĠĠĠĠ Ġmarkdown _ editor . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( markdown _ editor . has Focus ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Software Keyboard ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġset On Focus ChangeListener () ĊĠĠĠĠĠĠĠ Ġadd TextChanged Listener () ĊĠĠĠĠĠĠĠ Ġauto Save () Ġ// ĠStart Ġthe Ġauto - save Ġloop ĊĊĠĠĠĠĠĠĠ Ġ// ĠLayout Ġchanged , Ġhighlight Ġmarkdown ĊĠĠĠĠĠĠĠĠ Ġvar Ġjust Created Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġmarkdown _ editor . add On Layout ChangeListener Ġ{ Ġ_: ĠView , Ġ_: ĠInt , Ġ_: ĠInt , Ġ_: ĠInt , Ġ_: ĠInt , Ġ_: ĠInt , Ġ_: ĠInt , Ġ_: ĠInt , Ġ_: ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( just Created ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠHighlight Ġmarkdown ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjust Created Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġeditor Tabs . setup () ĊĊĠĠĠĠĠĠĠ Ġ// ĠTab Ġ 1 ĊĠĠĠĠĠĠĠ Ġval Ġspec Ġ= Ġeditor Tabs . new Tab Spec (" Markdown ") ĊĠĠĠĠĠĠĠ Ġspec . setContent ( markdown _ view . id ) ĊĠĠĠĠĠĠĠ Ġspec . set Indicator (" Markdown ") ĊĠĠĠĠĠĠĠ Ġeditor Tabs . add Tab ( spec ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTab Ġ 2 ĊĠĠĠĠĠĠĠ Ġval Ġspec 2 Ġ= Ġeditor Tabs . new Tab Spec (" Preview ") ĊĠĠĠĠĠĠĠ Ġspec 2 . setContent ( document _ view . id ) ĊĠĠĠĠĠĠĠ Ġspec 2 . set Indicator (" Preview ") ĊĠĠĠĠĠĠĠ Ġeditor Tabs . add Tab ( spec 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġauto Save () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= ĠHandler () ĊĠĠĠĠĠĠĠ Ġval Ġdelay Ġ= Ġ 5 0 0 0 L Ġ// milliseconds ĊĊĠĠĠĠĠĠĠ Ġhandler . post Delayed ( object Ġ: ĠRunnable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( edited Since Last Save ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDocument (). save ( application Context , Ġintent . getString Extra (" filename "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnote Id , Ġmarkdown _ editor . text . toString (), Ġfalse , Ġsalt ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedited Since Last Save Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . post Delayed ( this , Ġdelay ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, Ġdelay ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd TextChanged Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġmarkdown _ editor . add TextChanged Listener ( object : Text Watcher Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġline Point Before Change : ĠArray < Int > Ġ= Ġempty Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġlast CharSequence Length Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( p 0 : ĠEdit able ?) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( p 0 : ĠCharSequence ?, Ġstart : ĠInt , Ġcount : ĠInt , Ġafter : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Point Before Change Ġ= ĠgetCurrent Line Position ( markdown _ editor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast CharSequence Length Ġ= Ġp 0 !!. count () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( p 0 : ĠCharSequence ?, Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedited Since Last Save Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Line Point Ġ= ĠgetCurrent Line Position ( markdown _ editor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( p 0 !!. count () Ġ== Ġ 1 Ġ|| Ġmarkdown _ editor . text . length Ġ>= Ġcurrent Line Point [ 1 ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Markdown ( current Line Point [ 0 ], Ġcurrent Line Point [ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( p 0 . count () Ġ> Ġ 1 Ġ&& Ġlast CharSequence Length Ġ< Ġp 0 . count ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Markdown ( line Point Before Change [ 0 ], Ġstart Ġ+ Ġcount ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset On Focus ChangeListener () Ġ{ ĊĠĠĠĠĠĠĠ Ġtext _ editor . setOn Focus ChangeListener Ġ{ Ġview : ĠView , Ġ_: ĠBoolean Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( text _ editor . has Focus ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMark won . set Markdown ( text _ editor , Ġmarkdown _ editor . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Software Keyboard ( false , Ġview ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ) Ġ: ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġif Ġ( item . itemId Ġ== Ġandroid . R . id . home ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Back () ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠ Ġon Back () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġlayout Changed () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠHighlight ĠMarkdown ĊĠĠĠĠĠĠĠ Ġif Ġ( markdown _ editor . text . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlayout Ġ= Ġmarkdown _ editor . layout ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġ 0 Ġuntil Ġmarkdown _ editor . line Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġline Start Ġ= Ġlayout . getLine Start ( index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġline End Ġ= Ġlayout . getLine End ( index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Markdown ( line Start , Ġline End ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstyle Markdown ( start : ĠInt , Ġend : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġmarkdown Ġ= Ġ"" ĊĊĠĠĠĠĠĠĠ Ġif Ġ( start Ġin Ġ 0 .. ( end Ġ- Ġ 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmarkdown Ġ= Ġmarkdown _ editor . text . substring ( start , Ġend ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠLex Ġinput ( one Ġline ) ĊĠĠĠĠĠĠĠ Ġval Ġlex Data Ġ= ĠLex er (). lex ( markdown ) Ġ// ĠCurrent Ġline ĊĠĠĠĠĠĠĠ Ġfor Ġ(( type Index , Ġmodifier ) Ġin Ġlex Data . with Index ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ+ Ġ 1 Ġ< Ġmodifier . count ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex 1 Ġ= Ġstart Ġ+ Ġmodifier [ i ] Ġ+ ĠgetType ( type Index ). length ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex 2 Ġ= Ġstart Ġ+ Ġmodifier [ i Ġ+ Ġ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Line ( index 1 , Ġindex 2 , Ġtype Index , Ġtrue ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi Ġ+= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( modifier . count () Ġ% Ġ 2 Ġ!= Ġ 0 Ġ&& Ġmodifier . count () Ġ> Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Line ( start , Ġend , Ġtype Index , false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĊĠĠĠĠĠĠĠ Ġ// ĠFind Ġheading ĊĠĠĠĠĠĠĠ Ġvar Ġtype Index Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmarkdown . startsWith ("# Ġ") ĠĠ Ġ-> Ġtype Index Ġ= Ġ 4 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmarkdown . startsWith (" ## Ġ") Ġ Ġ-> Ġtype Index Ġ= Ġ 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmarkdown . startsWith (" ### Ġ") Ġ-> Ġtype Index Ġ= Ġ 6 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġif Ġ( type Index Ġ>= Ġ 4 ) Ġ{ Ġ// ĠStyle Ġheading ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Line ( start , Ġend , Ġtype Index , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( type Index Ġ< Ġ 4 ) Ġ{ Ġ// ĠReset Ġfont Ġsize Ġif Ġheading Ġremoved ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcursor Pos Ġ= Ġmarkdown _ editor . selection Start ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdefault Font Sizes : ĠList < *> Ġ= Ġget Effect Values ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmarkdown _ editor . setSelection ( start , Ġend ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠALL _ EFFECT S [ 6 ]. apply To Selection ( markdown _ editor , Ġdefault Font Sizes [ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmarkdown _ editor . setSelection ( cursor Pos ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstyle Line ( index 1 : ĠInt , Ġindex 2 : ĠInt , Ġtype Index : ĠInt , Ġhas Style : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcursor Position Ġ= Ġmarkdown _ editor . selection End ĊĠĠĠĠĠĠĠ Ġval Ġeffect Index ĠĠĠ Ġ= Ġtype Index To Effect Index ( type Index ) ĊĠĠĠĠĠĠĠ Ġval Ġeffect Values : ĠĠĠĠ ĠList < *> Ġ= Ġget Effect Values ( type Index ) ĊĠĠĠĠĠĠĠ Ġ// val Ġdefault Font Sizes : ĠList < *> Ġ= Ġget Effect Values ( 4 ) ĊĠĠĠĠĠĠĠ Ġval Ġhas Style Int ĠĠĠ Ġ= Ġhas Style . toInt (). binary Invert () ĊĠĠĠĠĠĠĠ Ġvar ĠtextColor ĠĠĠĠĠ Ġ= ĠColor . BLACK ĊĊĠĠĠĠĠĠĠ Ġif Ġ( getDefault Pref ( this ). getBoolean (" dark _ theme _ settings _ checkbox ", Ġfalse )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextColor Ġ= ĠColor . WHITE ĊĊĠĠĠĠĠĠĠ Ġ// ĠStyle ! ĊĠĠĠĠĠĠĠ Ġvar Ġtype Length Ġ= ĠgetType ( type Index ). length ĊĠĠĠĠĠĠĠ Ġif Ġ(! has Style ) Ġtype Length Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġif Ġ( effect Index Ġ< Ġ 4 ) Ġ{ Ġ// ĠNormal Ġmodifiers ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSelect Ġentire Ġthing , Ġcolor Ġand Ġstyle ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmarkdown _ editor . setSelection ( index 1 Ġ- Ġtype Length , Ġindex 2 Ġ+ Ġtype Length ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠALL _ EFFECT S [ 7 ]. apply To Selection ( markdown _ editor , ĠColor . parse Color ("# A 6 D 3 D 3 D 3 ")) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( effect Index Ġ== Ġ 1 ) Ġ// ĠApply Ġitalic Ġto Ġmodifiers Ġas Ġwell ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠALL _ EFFECT S [ effect Index ]. apply To Selection ( markdown _ editor , Ġeffect Values [ has Style Int ]) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSelect Ġinside , Ġremove Ġgray Ġcolor Ġfrom Ġbefore Ġand Ġreset Ġthe Ġsize ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmarkdown _ editor . setSelection ( index 1 , Ġindex 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠALL _ EFFECT S [ 7 ]. apply To Selection ( markdown _ editor , ĠtextColor ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠALL _ EFFECT S [ effect Index ]. apply To Selection ( markdown _ editor , Ġeffect Values [ has Style Int ]) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ġ// ĠHead ings ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSelect Ġand Ġstyle Ġthe Ġtext ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmarkdown _ editor . setSelection ( index 1 , Ġindex 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠALL _ EFFECT S [ effect Index ]. apply To Selection ( markdown _ editor , Ġeffect Values [ has Style Int ]) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSelect Ġand Ġstyle Ġthe Ġ# ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmarkdown _ editor . setSelection ( index 1 , Ġindex 1 Ġ+ Ġtype Length ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠALL _ EFFECT S [ 7 ]. apply To Selection ( markdown _ editor , ĠColor . parse Color ("# A 6 D 3 D 3 D 3 ")) Ġ Ġ// ĠColor Ġthem ĊĠĠĠĠĠĠĠĠĠĠĠ ĠALL _ EFFECT S [ 6 ]. apply To Selection ( markdown _ editor , Ġeffect Values [ 2 ]) ĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSelect Ġafter Ġp ound Ġsigns ĊĠĠĠĠĠĠĠ Ġ} /* Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmarkdown _ editor . setSelection ( index 1 , Ġindex 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠALL _ EFFECT S [ type Index ]. apply To Selection ( markdown _ editor , Ġeffect Values [ 1 ]) ĊĠĠĠĠĠĠĠ Ġ}*/ ĊĊĠĠĠĠĠĠĠ Ġ// ĠReset Ġsur round ings ĊĠĠĠĠĠĠĠ Ġmarkdown _ editor . setSelection ( cursor Position ) ĊĠĠĠĠĠĠĠ ĠALL _ EFFECT S [ effect Index ]. apply To Selection ( markdown _ editor , Ġeffect Values [ 1 ]) ĊĠĠĠĠĠĠĠ ĠALL _ EFFECT S [ 7 ]. apply To Selection ( markdown _ editor , ĠtextColor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtype Index To Effect Index ( type Index : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠarrayOf ( 0 , Ġ 2 , Ġ 1 , Ġ 1 , Ġ 6 , Ġ 6 , Ġ 6 )[ type Index ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetType ( type Index : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠarrayOf (" ** ", Ġ"__ ", Ġ"*", Ġ"_ ", Ġ"# ", Ġ" ## ", Ġ" ### ")[ type Index ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinline Ġfun Ġ< re ified ĠT > Ġget Effect Values ( type Index : ĠInt ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( type Index ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 , Ġ 1 , Ġ 2 , Ġ 3 Ġ-> ĠlistOf ( true , Ġfalse ) Ġas ĠT ĊĠĠĠĠĠĠĠĠĠĠĠĠ 4 Ġ-> ĠlistOf ( pixels To Sp ( 3 8 ), Ġpixels To Sp ( 1 8 ), Ġpixels To Sp ( 2 4 )) Ġas ĠT ĊĠĠĠĠĠĠĠĠĠĠĠĠ 5 Ġ-> ĠlistOf ( pixels To Sp ( 3 4 ), Ġpixels To Sp ( 1 8 ), Ġpixels To Sp ( 2 4 )) Ġas ĠT ĊĠĠĠĠĠĠĠĠĠĠĠĠ 6 Ġ-> ĠlistOf ( pixels To Sp ( 2 6 ), Ġpixels To Sp ( 1 8 ), Ġpixels To Sp ( 2 4 )) Ġas ĠT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠlistOf ( true , Ġfalse ) Ġas ĠT ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpixels To Sp ( pixels : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ( pixels Ġ* Ġresources . display Metrics . scaled Density ). toInt () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Back () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠMainActivity :: class . java ) ĊĠĠĠĠĠĠĠ Ġshow Software Keyboard ( false ) ĊĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠ ĠMainActivity . Protection . ask For Password Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Software Keyboard ( show : ĠBoolean , Ġview : ĠView Ġ= ĠView ( this )) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġimm Ġ= Ġget System Service ( Context . INPUT _ METHOD _ SERVICE ) Ġas ĠInput Method Manager ĊĊĠĠĠĠĠĠĠ Ġif Ġ( show ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimm . show Soft Input ( markdown _ editor , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimm . hide Soft Input From Window ( view . window Token , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ ĠDocument (). save ( application Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . getString Extra (" filename "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnote Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmarkdown _ editor . text . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMainActivity . FileList . current Notebook . sync , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsalt ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ