package Ġorg . sor z . lab . tiny keep ass Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Toast Ċ import Ġorg . jetbrains . ank o . An ko Logger Ċ import Ġorg . jetbrains . ank o . warn Ċ Ċ import Ġorg . sor z . lab . tiny keep ass . keep ass . K ee Pass Storage Ċ import Ġorg . sor z . lab . tiny keep ass . keep ass . database File Ċ Ċ import Ġorg . sor z . lab . tiny keep ass . keep ass . has Database Configured ĊĊ Ċ private Ġconst Ġval ĠREQUEST _ SETUP _ DATABASE Ġ= Ġ 1 Ċ Ċ class ĠMainActivity Ġ: ĠBase Activity (), ĠAn ko Logger Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( savedInstanceState Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( R . id . fragment _ container , ĠDatabase Locked Fragment ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! has Database Configured ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo Configure Database () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo Unlock Database () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( K ee Pass Storage . get ( this ) Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRe starting Ġactivity ĊĠĠĠĠĠĠĠĠĠĠĠ ĠK ee Pass Storage . register Broadcast Receiver ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( findViewById ( R . id . toolbar )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġoverride Ġfun Ġon New Intent ( intent : ĠIntent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on New Intent ( intent ) ĊĠĠĠĠĠĠĠ Ġif Ġ( K ee Pass Storage . get ( this ) Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Entry List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġif Ġ( is Finish ing ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠK ee Pass Storage . set ( this , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġif Ġ( K ee Pass Storage . get ( this ) Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= Ġsupport FragmentManager . find Fragment ById ( R . id . fragment _ container ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( fragment Ġ! is ĠEntry Fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Entry List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdo Unlock Database () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( K ee Pass Storage . get ( this ) Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Entry List () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Database Keys ({ Ġkeys Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Database ( keys [ 0 ]) Ġ{ Ġshow Entry List () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ Ġerr Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Error ( err ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdo Lock Database () Ġ{ ĊĠĠĠĠĠĠĠ ĠK ee Pass Storage . set ( this , Ġnull ) ĊĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( R . id . fragment _ container , ĠDatabase Locked Fragment ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdo Configure Database () Ġ{ ĊĠĠĠĠĠĠĠ ĠK ee Pass Storage . set ( this , Ġnull ) ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠDatabase Setup Activity :: class . java ) ĊĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , ĠREQUEST _ SETUP _ DATABASE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdo Sync Database () Ġ{ ĊĠĠĠĠĠĠĠ Ġget Database Keys ({ Ġkeys Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġpreferences . getString (" db - url ", Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmaster Key Ġ= Ġkeys . get ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġusername : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġpassword : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( preferences . getBoolean (" db - auth - required ", Ġfalse )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusername Ġ= Ġpreferences . getString (" db - auth - username ", Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Ġ= Ġkeys . get ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠDatabase Sync ing Service . get Fetch Intent ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , Ġurl , Ġmaster Key , Ġusername , Ġpassword ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Service ( intent ) ĊĠĠĠĠĠĠĠ Ġ}) Ġ{ Ġshow Error ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdo Clean Database () Ġ{ ĊĠĠĠĠĠĠĠ ĠK ee Pass Storage . set ( this , Ġnull ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! database File . delete ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwarn (" fail Ġto Ġdelete Ġdatabase Ġfile ") ĊĠĠĠĠĠĠĠ Ġsecure String Storage . clear () ĊĠĠĠĠĠĠĠ ĠDatabase Setup Activity . clear Database Configs ( preferences ) ĊĠĠĠĠĠĠĠ Ġshow Message ( getString ( R . string . clean _ config _ ok ), ĠSn ackbar . LENGTH _ SHORT ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Entry List () Ġ{ ĊĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( R . id . fragment _ container , ĠEntry Fragment . newInstance ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Error ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Message ( message , ĠSn ackbar . LENGTH _ LONG ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Message ( text : ĠCharSequence , Ġduration : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠfindViewById < View ? >( R . id . fragment _ container )?. let Ġ{ Ġview Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( view , Ġtext , Ġduration ). show () ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġview Ġwill Ġbe Ġnull Ġif Ġthis Ġmethod Ġcalled Ġon ĠonCreate (). ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġt Ġ= Ġif Ġ( duration Ġ== ĠSn ackbar . LENGTH _ SHORT ) ĠToast . LENGTH _ SHORT Ġelse ĠToast . LENGTH _ LONG ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġtext , Ġt ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ