package Ġmodules . mx . gui Ċ Ċ import Ġinterfaces . I Index Manager Ċ import Ġinterfaces . IM odule Ċ import Ġio . ktor . util .* Ċ import Ġjavafx . beans . property . Simple String Property Ċ import Ġjavafx . geometry . Orientation Ċ import Ġjavafx . scene . paint . Color Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġkotlinx . serialization . Experimental Serialization Api Ċ import Ġkotlinx . serialization . decode FromString Ċ import Ġkotlinx . serialization . encode ToString Ċ import Ġkotlinx . serialization . json . Json Ċ import Ġmodules . m 2 . Contact Ċ import Ġmodules . m 2 . logic . Contact Controller Ċ import Ġmodules . mx . Statistic Ċ import Ġmodules . mx . contact Index Manager Ċ import Ġmodules . mx . misc . EM ailer Ini Ċ import Ġmodules . mx . right Buttons Width Ċ import Ġt orn ad of x .* Ċ Ċ @ Experimental Serialization Api Ċ @ Internal API Ċ class ĠG EM ailer Ġ: ĠI Module , ĠView (" EM ailer ") Ġ{ ĊĠ Ġoverride Ġval ĠmoduleName Long Ġ= Ġ" EM ailer " ĊĠ Ġoverride Ġval Ġmodule Ġ= Ġ" MX " ĊĠ Ġoverride Ġfun Ġget Index Manager (): ĠI Index Manager ? Ġ{ ĊĠĠĠ Ġreturn Ġnull ĊĠ Ġ} ĊĊĠ Ġprivate Ġvar Ġini Val Ġ= Ġget Ini () ĊĊĠ Ġprivate Ġval Ġsubject Property Ġ= ĠSimple String Property () ĊĠ Ġval Ġsal utation Property Ġ= ĠSimple String Property () ĊĠ Ġprivate Ġval Ġbody Property Ġ= ĠSimple String Property ( getDefault Texts ()) ĊĠ Ġval Ġrecipient Property Ġ= ĠSimple String Property () ĊĠ Ġvar Ġcontact : ĠContact ? Ġ= Ġnull ĊĊĠ Ġprivate Ġfun ĠgetDefault Texts (): ĠString Ġ{ ĊĠĠĠ Ġini Val Ġ= Ġget Ini () ĊĠĠĠ Ġvar Ġdefault Text Body Ġ= Ġ"" ĊĠĠĠ Ġif Ġ( ini Val . default Footer . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠ Ġdefault Text Body Ġ= Ġ"\ n \ n ${ ini Val . default Footer }" ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġdefault Text Body ĊĠ Ġ} ĊĊĠ Ġprivate Ġval Ġstatus Property Ġ= ĠSimple String Property (" Draft ") ĊĊĠ Ġprivate Ġval Ġcontact Controller : ĠContact Controller Ġby Ġinject () ĊĠ Ġoverride Ġval Ġroot Ġ= Ġborder pane Ġ{ ĊĠĠĠ Ġpref Width Ġ= Ġ 8 0 0 . 0 ĊĠĠĠ Ġpref Height Ġ= Ġ 5 0 0 . 0 ĊĠĠĠ Ġcenter Ġ= Ġform Ġ{ ĊĠĠĠĠĠ Ġfield set (" EM ail ĠForm ") Ġ{ ĊĠĠĠĠĠĠĠ Ġfield (" Status ") Ġ{ Ġlabel ( status Property ) Ġ} ĊĠĠĠĠĠĠĠ Ġfield (" Subject ") Ġ{ Ġtext field ( subject Property ) Ġ} ĊĠĠĠĠĠĠĠ Ġfield (" Sal utation ") Ġ{ Ġtext field ( sal utation Property ) Ġ} ĊĠĠĠĠĠĠĠ Ġfield (" Body ") Ġ{ Ġtextarea ( body Property ) Ġ} ĊĠĠĠĠĠĠĠ Ġfield (" Recipient ") Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġtext field ( recipient Property ) ĊĠĠĠĠĠĠĠĠĠ Ġbutton (" Load ĠContact ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontact Ġ= Ġcontact Controller . select And Load Contact () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecipient Property . value Ġ= Ġcontact !!. email ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsal utation Property . value Ġ= Ġcontact !!. sal utation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġright Ġ= Ġv box Ġ{ ĊĠĠĠĠĠ Ġbutton (" Send ĠE Mail Ġ( CTRL + S )") Ġ{ ĊĠĠĠĠĠĠĠ Ġshortcut (" CTRL + S ") ĊĠĠĠĠĠĠĠ Ġpref Width Ġ= Ġright Buttons Width Ġ* Ġ 1 . 5 ĊĠĠĠĠĠĠĠ Ġstyle Ġ{ Ġunsafe ("- fx - base ", ĠColor . DARK GREEN ) Ġ} ĊĠĠĠĠĠĠĠ Ġaction Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġif Ġ( send Email ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsubject Ġ= Ġsubject Property . value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ= Ġget Body Text (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecipient Ġ= Ġrecipient Property . value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ)) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Property . value Ġ= Ġ" Sent " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Add ĠContact ĠStat istic ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ini Val . write Statistics ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( contact Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstatistic : ĠStat istic Ġ= Ġif Ġ( contact !!. statistics . containsKey (" EM ails ĠSent ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson . decode FromString ( contact !!. statistics [" EM ails ĠSent "] !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStat istic (" EM ails ĠSent ", Ġ" 0 ", Ġ 0 . 0 F , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatistic . n Value Ġ+= Ġ 1 . 0 F ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatistic . s Value Ġ= Ġ( statistic . n Value ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontact !!. statistics [" EM ails ĠSent "] Ġ= ĠJson . encode ToString ( statistic ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontact Index Manager !!. save ( contact Ġas ĠContact ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġstatus Property . value Ġ= Ġ" Draft Ġ( Error Ġwhile Ġsending ! )" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġbutton (" New ĠE Mail Ġ( CTRL + X )") Ġ{ ĊĠĠĠĠĠĠĠ Ġshortcut (" CTRL + X ") ĊĠĠĠĠĠĠĠ Ġpref Width Ġ= Ġright Buttons Width Ġ* Ġ 1 . 5 ĊĠĠĠĠĠĠĠ Ġaction Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġsubject Property . value Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠ Ġsal utation Property . value Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠ Ġbody Property . value Ġ= ĠgetDefault Texts () ĊĠĠĠĠĠĠĠĠĠ Ġrecipient Property . value Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠ Ġstatus Property . value Ġ= Ġ" Draft " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ// Ġ################################ ################ ## ĊĠĠĠĠĠ Ġ// Ġ ################ ## ĠSettings Ġ ################ ###### ĊĠĠĠĠĠ Ġ// Ġ################################ ################ ## ĊĠĠĠĠĠ Ġseparator ( Orientation . HORIZONTAL ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpadding Vertical Ġ= Ġ 1 5 ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġbutton (" Settings ") Ġ{ ĊĠĠĠĠĠĠĠ Ġaction Ġ{ Ġshow Settings () Ġ} ĊĠĠĠĠĠĠĠ Ġtooltip (" Shows Ġthe Ġsettings .") ĊĠĠĠĠĠĠĠ Ġpref Width Ġ= Ġright Buttons Width Ġ* Ġ 1 . 5 ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġshow Settings () Ġ{ ĊĠĠĠ Ġfind < GE Mailer Settings >(). open Modal () ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġget Ini (): ĠE Mailer Ini Ġ{ ĊĠĠĠ Ġval Ġini Txt Ġ= Ġget Settings File Text ( sub Setting Ġ= Ġ" MG X EM ailer ") ĊĠĠĠ Ġreturn Ġif Ġ( ini Txt . isNotEmpty ()) ĠJson . decode FromString ( ini Txt ) Ġelse ĠE Mailer Ini () ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġget Body Text (): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġ"${ sal utation Property . value }\ n \ n ${ body Property . value }" ĊĠ Ġ} Ċ } Ċ