package Ġcom . iv an ov sky . pass notes . presentation . unlock Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . lifecycle . observe Ċ import Ġcom . iv an ov sky . pass notes . R Ċ import Ġcom . iv an ov sky . pass notes . data . entity . Conflict Resolution Strategy . RESOL VE _ WITH _ LOCAL _ FILE Ċ import Ġcom . iv an ov sky . pass notes . data . entity . Conflict Resolution Strategy . RESOL VE _ WITH _ REMOTE _ FILE Ċ import Ġcom . iv an ov sky . pass notes . data . entity . Sync Conflict Info Ċ import Ġcom . iv an ov sky . pass notes . databinding . Unlock Fragment Binding Ċ import Ġcom . iv an ov sky . pass notes . domain . DateFormat Provider Ċ import Ġcom . iv an ov sky . pass notes . injection . Global Injector . inject Ċ import Ġcom . iv an ov sky . pass notes . presentation . core . Base Fragment Ċ import Ġcom . iv an ov sky . pass notes . presentation . core . dialog . Three Button Dialog Ċ import Ġcom . iv an ov sky . pass notes . presentation . core . extensions . hide Keyboard Ċ import Ġcom . iv an ov sky . pass notes . presentation . core . extensions . setup ActionBar Ċ import Ġcom . iv an ov sky . pass notes . presentation . core . extensions . show Snackbar Message Ċ import Ġcom . iv an ov sky . pass notes . presentation . navigation . Navigation Menu ViewModel Ċ import Ġorg . apache . commons . lang 3 . StringUtils . EMPTY Ċ import Ġjava . util . Date Ċ Ċ class ĠUn lock Fragment Ġ: ĠBase Fragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠUn lock Fragment Binding ĊĠĠĠ Ġprivate Ġval ĠdateFormat Provider : ĠDate Format Provider Ġby Ġinject () ĊĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠUn lock ViewModel Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠViewModel Provider ( require Activity (), ĠUn lock ViewModel . FACTORY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get ( Unlock ViewModel :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġsetup ActionBar Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= ĠgetString ( R . string . app _ name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Display Home As Up Enabled ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Home As Up Indicator ( R . drawable . ic _ menu _ white _ 2 4 dp ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ ĠviewModel . on Screen Start () ĊĠĠĠĠĠĠĠ Ġnavigation ViewModel . setVisible Items ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNavigation Menu ViewModel . create Navigation Items For Basic Scre ens () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġnavigation ViewModel . set Navigation Enabled ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠUn lock Fragment Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . lifecycle Owner Ġ= Ġview Lifecycle Owner ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . viewModel Ġ= ĠviewModel ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġsubscribe To Live Events () ĊĊĠĠĠĠĠĠĠ ĠviewModel . load Data ( reset Selection Ġ= Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsubscribe To Live Events () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . hide Keyboard Event . observe ( view Lifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Keyboard () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠviewModel . show Snackbar Message . observe ( view Lifecycle Owner ) Ġ{ Ġmessage Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Snackbar Message ( message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠviewModel . show Resolve Conflict Dialog . observe ( view Lifecycle Owner ) Ġ{ Ġinfo Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Resolve Conflict Dialog ( info ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Resolve Conflict Dialog ( info : ĠSync Conflict Info ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlocal Date Ġ= Ġinfo . local File . modified ?. let Ġ{ ĠDate ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġremote Date Ġ= Ġinfo . remote File . modified ?. let Ġ{ ĠDate ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġval ĠdateFormat Ġ= ĠdateFormat Provider . getLong DateFormat () ĊĠĠĠĠĠĠĠ Ġval Ġtime Format Ġ= ĠdateFormat Provider . getTime Format () ĊĊĠĠĠĠĠĠĠ Ġval Ġlocal Date Text Ġ= Ġlocal Date ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ ĠdateFormat . format ( it ) Ġ+ Ġ" Ġ" Ġ+ Ġtime Format . format ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠEMPTY ĊĊĠĠĠĠĠĠĠ Ġval Ġremote Date Text Ġ= Ġremote Date ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ ĠdateFormat . format ( it ) Ġ+ Ġ" Ġ" Ġ+ Ġtime Format . format ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠEMPTY ĊĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠgetString ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . resolve _ conflict _ dialog _ message , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocal Date Text , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremote Date Text ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠThree Button Dialog . newInstance ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġmessage , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpositive ButtonText Ġ= ĠgetString ( R . string . remote _ database ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnegative ButtonText Ġ= ĠgetString ( R . string . local _ database ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġneutral ButtonText Ġ= ĠgetString ( R . string . cancel ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Positive Clicked Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . on Resolve Conflict Confirmed ( RESOL VE _ WITH _ REMOTE _ FILE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Negative Clicked Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . on Resolve Conflict Confirmed ( RESOL VE _ WITH _ LOCAL _ FILE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdialog . show ( child FragmentManager , ĠThree Button Dialog . TAG ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance () Ġ= ĠUn lock Fragment () ĊĠĠĠ Ġ} Ċ }