package Ġget . some . tr at ata . uni project crypto tracker . ui Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . text . InputType Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . View Manager Ċ import Ġandroid . widget .* Ċ import Ġget . some . tr at ata . uni project crypto tracker . R Ċ import Ġget . some . tr at ata . uni project crypto tracker . models . Notification Ċ import Ġget . some . tr at ata . uni project crypto tracker . providers . Offline Provider Ċ import Ġget . some . tr at ata . uni project crypto tracker . util . Util Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġkotlinx . android . synt hetic . main . currency _ notifications .* Ċ import Ġkotlinx . android . synt hetic . main . currency _ notifications . view .* Ċ import Ġjava . util . ArrayList Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠMel ent ii ĠEv gh en ii Ġon Ġ 1 / 1 5 / 2 0 1 8 . Ċ Ġ* ĠEmail : Ġmel ent ii _ e ug en @ mail . ru Ċ Ġ* ĠMIT ĠLicense Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 8 ĠMel ent ii ĠEv gh en ii Ċ Ġ*/ Ċ Ċ // Program matically Ġmanaged Ġviews Ġlife Ċ class ĠCurrency Notifications Fragment Ġ: ĠFragment (), ĠView . OnClickListener Ġ{ ĊĊĠĠĠ Ġinternal Ġvar Ġedit Text Ids Ġ= ĠArrayList < Int >() ĊĠĠĠ Ġinternal Ġvar Ġswitch Ids Ġ= ĠArrayList < Int >() ĊĠĠĠ Ġinternal Ġvar Ġbutton Ids Ġ= ĠArrayList < Int >() ĊĠĠĠ Ġinternal Ġvar Ġitem Ids Ġ= ĠArrayList < Int >() ĊĠĠĠ Ġvar Ġcurrency Name Ġ= Ġ"" ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġretain Instance Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( R . layout . currency _ notifications , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġcurrency Name Ġ= Ġ( activity Ġas ĠCurrency Activity ). currency Name ĊĊĠĠĠĠĠĠĠ Ġview . add _ notification . setOnClickListener Ġ{ Ġadd Notification ( null ) Ġ} ĊĊĠĠĠĠĠĠĠ ĠOff line Provider . getInstance ( context ). get Notifications ( currency Name ). subscribe On ( Schedulers . io ()). observe On ( Android Schedulers . main Thread ()). subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( notification Ġin Ġit ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Notification ( notification ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOff line Provider . getInstance ( context ). delete Notifications ( it ). subscribe On ( Schedulers . io ()). subscribe () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġedit Text Ids . clear () ĊĠĠĠĠĠĠĠ Ġswitch Ids . clear () ĊĠĠĠĠĠĠĠ Ġbutton Ids . clear () ĊĠĠĠĠĠĠĠ Ġitem Ids . clear () ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsave Notification () ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsave Notification () ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġadd Notification ( notification : ĠNotification ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġlayout Inflater . inflate ( R . layout . notification _ item , Ġnotifications _ container , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġitem . id Ġ= ĠUtil . generate View Id () ĊĠĠĠĠĠĠĠ Ġval ĠtextView Ġ= Ġitem . findViewById < TextView >( R . id . textView ) ĊĠĠĠĠĠĠĠ Ġval Ġswitch View Ġ= Ġitem . findViewById < Switch >( R . id . switch View ) ĊĠĠĠĠĠĠĠ Ġval Ġedit Text Ġ= Ġitem . findViewById ( R . id . edit text item ) Ġas ĠEditText ĊĠĠĠĠĠĠĠ Ġval Ġimage Button Ġ= Ġitem . findViewById ( R . id . image Button ) Ġas ĠImage Button ĊĠĠĠĠĠĠĠ ĠtextView . text Ġ= Ġcurrency Name Ġ+ Ġ" Ġ( smaller Ġ" ĊĠĠĠĠĠĠĠ Ġswitch View . id Ġ= ĠUtil . generate View Id () ĊĠĠĠĠĠĠĠ Ġedit Text . id Ġ= ĠUtil . generate View Id () ĊĠĠĠĠĠĠĠ Ġedit Text . hint Ġ= Ġ" goal Ġvalue " ĊĠĠĠĠĠĠĠ Ġedit Text . input Type Ġ= ĠInput Type . TYPE _ CLASS _ NUMBER Ġor ĠInput Type . TYPE _ NUMBER _ FLAG _ DECIMAL ĊĠĠĠĠĠĠĠ Ġimage Button . id Ġ= ĠUtil . generate View Id () ĊĠĠĠĠĠĠĠ Ġimage Button . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġedit Text Ids . add ( edit Text . id ) ĊĠĠĠĠĠĠĠ Ġswitch Ids . add ( switch View . id ) ĊĠĠĠĠĠĠĠ Ġbutton Ids . add ( image Button . id ) ĊĠĠĠĠĠĠĠ Ġitem Ids . add ( item . id ) ĊĠĠĠĠĠĠĠ Ġnotifications _ container . addView ( item ) ĊĠĠĠĠĠĠĠ Ġif ( notification Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( notification . direction . equals (" up ")) Ġswitch View . isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text . setText ( notification . goal . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick ( v : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġbutton Ids . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( v . id Ġ== Ġbutton Ids [ i ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlinear Layout Ġ= Ġview ?. findViewById < View >( item Ids [ i ]) Ġas ĠLinearLayout ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( linear Layout . parent Ġas ĠView Manager ). remove View ( linear Layout ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Ids . remove At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswitch Ids . remove At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text Ids . remove At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Ids . remove At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsave Notification (){ ĊĠĠĠĠĠĠĠ Ġval Ġnotifications Ġ= ĠArrayList < Notification >() ĊĠĠĠĠĠĠĠ Ġvar Ġnotification : ĠNotification ĊĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġedit Text Ids . indices ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Ġ= ĠNotification () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotification . currency Name Ġ= Ġcurrency Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġet Ġ= Ġview ?. findViewById < View >( edit Text Ids [ i ]) Ġas ĠEditText ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġswitch View Ġ= Ġview ?. findViewById < View >( switch Ids [ i ]) Ġas ĠSwitch ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( switch View . isChecked ) Ġnotification . direction Ġ= Ġ" up " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġnotification . direction Ġ= Ġ" down " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtt Ġ= Ġet . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( tt . isBlank ()) Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġnotification . goal Ġ= Ġtt . toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotifications . add ( notification ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠOff line Provider . getInstance ( context ). insert Notifications ( notifications ). subscribe On ( Schedulers . io ()). subscribe () ĊĠĠĠ Ġ} Ċ Ċ }