package Ġj g apps and games . me . save . shopping list Ċ Ċ // ĠJava Ċ import Ġjava . io . File Ċ Ċ // ĠAndroid Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Point Ċ Ċ // ĠZ xing Ċ import Ġcom . google . zx ing . Barcode Format Ċ import Ġcom . google . zx ing . Writer Exception Ċ import Ġcom . google . zx ing . common . Bit Matrix Ċ import Ġcom . google . zx ing . qrcode . QR Code Writer Ċ Ċ // ĠJSON Ċ import Ġorg . json . JSONArray Ċ import Ġorg . json . JSONObject Ċ Ċ // ĠSave Ċ import Ġj g apps and games . me . save . ingredient . Ingredient Ċ import Ġj g apps and games . me . save . ingredient . Quantity Ċ import Ġj g apps and games . me . save . utility . TEST ING _ B Ċ import Ġj g apps and games . me . save . utility . TEST ING _ D Ċ import Ġj g apps and games . me . save . utility . getApplication File path Ċ import Ġj g apps and games . me . save . utility . save JSON Ċ Ċ /** Ċ Ġ* ĠShop ping ĠList Ċ Ġ* ĠCreated Ġby ĠJ osh ua ĠG arner Ġon Ġ 3 / 1 4 / 2 0 1 8 . Ċ Ġ*/ Ċ class ĠShop ping List (_ filename : ĠString ?, Ġ_ version : ĠInt ?, Ġ_ meta : ĠJSONObject ?, Ġ_ name : ĠString ?, Ġ_ note : ĠString ?, Ġ_ list : ĠArrayList < Internal Ingredient > ?, Ġ_ list _ j : ĠJSONArray ?) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠConstants Ġ---------------------------------------------------------------- --------------- ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFIL ENAME Ġ= Ġ" a " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠVERSION Ġ= Ġ" version " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠMETA Ġ= Ġ" b " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠNAME Ġ= Ġ" c " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠNOT ES Ġ= Ġ" d " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠLIST Ġ= Ġ" e " ĊĊĠĠĠĠĠĠĠ Ġ// ĠStatic ĠMethods Ġ-------------------------------------------------------------------------- ĊĠĠĠĠĠĠĠ Ġfun Ġto List ( array : ĠJSONArray ?): ĠArrayList < Internal Ingredient >? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( array Ġ== Ġnull ) Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr Ġ= ĠArrayList < Internal Ingredient >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġarray . length ()) Ġr . add ( Internal Ingredient ( array . opt JSONObject ( i ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġr ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġfrom List ( array : ĠArrayList < Internal Ingredient >? ): ĠJSONArray ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( array Ġ== Ġnull ) Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr Ġ= ĠJSONArray () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( l Ġin Ġarray ) Ġr . put ( l . toJSON ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġr ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠData Ġ-------------------------------------------------------------------------------- -------- ĊĠĠĠ Ġprivate Ġvar Ġfilename : ĠString Ġ= Ġ_ filename Ġ?: Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġversion : ĠInt Ġ= Ġ_ version Ġ?: ĠTEST ING _ D ĊĠĠĠ Ġprivate Ġvar Ġmeta : ĠJSONObject Ġ= Ġ_ meta Ġ?: ĠJSONObject () ĊĠĠĠ Ġprivate Ġvar Ġname : ĠString Ġ= Ġ_ name Ġ?: Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġnotes : ĠString Ġ= Ġ_ note Ġ?: Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġlist : ĠArrayList < Internal Ingredient > Ġ= Ġ_ list Ġ?: Ġ( toList (_ list _ j ) Ġ?: ĠArrayList ()) ĊĊĠĠĠ Ġ// ĠConstructors Ġ-------------------------------------------------------------------------------- ĊĠĠĠ Ġconstructor ( data : ĠJSONObject ): Ġthis ( data . opt String ( FILENAME , Ġ""), Ġdata . opt Int ( VERSION , ĠTEST ING _ B ), Ġdata . opt JSONObject ( META ), Ġdata . opt String ( NAME , Ġ""), Ġdata . opt String ( NOTES , Ġ""), Ġnull , Ġdata . opt JSONArray ( LIST )) ĊĊĠĠĠ Ġ// ĠManagement ĠMethods Ġ-------------------------------------------------------------------------- ĊĠĠĠ Ġfun Ġsave (): ĠShop ping List Ġ{ ĊĠĠĠĠĠĠĠ Ġsave JSON ( File ( getApplication File path (), Ġfilename ), ĠtoJSON ()) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠGet ters Ġ-------------------------------------------------------------------------------- ----- ĊĠĠĠ Ġfun Ġget Filename (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfilename ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Meta (): ĠJSONObject Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmeta ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetName (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġname ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Notes (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnotes ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetList (): ĠArrayList < Internal Ingredient > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġlist ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠSet ters Ġ-------------------------------------------------------------------------------- ----- ĊĠĠĠ Ġfun Ġset Filename (_ filename : ĠString ?): ĠShop ping List Ġ{ ĊĠĠĠĠĠĠĠ Ġfilename Ġ= Ġ_ filename Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Meta (_ meta : ĠJSONObject ?): ĠShop ping List Ġ{ ĊĠĠĠĠĠĠĠ Ġmeta Ġ= Ġ_ meta Ġ?: ĠJSONObject () ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠsetName (_ name : ĠString ?): ĠShop ping List Ġ{ ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġ_ name Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Notes (_ note : ĠString ?): ĠShop ping List Ġ{ ĊĠĠĠĠĠĠĠ Ġnotes Ġ= Ġ_ note Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset List (_ list : ĠArrayList < Internal Ingredient >? ): ĠShop ping List Ġ{ ĊĠĠĠĠĠĠĠ Ġlist Ġ= Ġ_ list Ġ?: ĠArrayList () ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠTo ĠMethods Ġ-------------------------------------------------------------------------------- -- ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠtoJSON (). toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠtoJSON (): ĠJSONObject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠJSONObject () ĊĠĠĠĠĠĠĠ Ġdata . put ( FILENAME , Ġfilename ) ĊĠĠĠĠĠĠĠ Ġdata . put ( VERSION , Ġversion ) ĊĠĠĠĠĠĠĠ Ġdata . put ( META , Ġmeta ) ĊĠĠĠĠĠĠĠ Ġdata . put ( NAME , Ġname ) ĊĠĠĠĠĠĠĠ Ġdata . put ( NOTES , Ġnotes ) ĊĠĠĠĠĠĠĠ Ġdata . put ( LIST , Ġfrom List ( list )) ĊĠĠĠĠĠĠĠ Ġreturn Ġdata ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġto QR Code (): ĠBitmap Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwriter Ġ= ĠQR Code Writer () ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmatrix : ĠBit Matrix Ġ= Ġwriter . encode ( toJSON (). put (" TYPE ", Ġ 2 ). toString (), ĠBar code Format . QR _ CODE , Ġ 5 1 2 , Ġ 5 1 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsize Ġ= ĠPoint ( matrix . width , Ġmatrix . height ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= ĠBitmap . create Bitmap ( size . x , Ġsize . y , ĠBitmap . Config . RGB _ 5 6 5 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( x Ġin Ġ 0 Ġuntil Ġsize . x ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( y Ġin Ġ 0 Ġuntil Ġsize . y ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap . set Pixel ( x , Ġy , Ġif Ġ( matrix . get ( x , Ġy )) ĠColor . BLACK Ġelse ĠColor . WHITE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠWriter Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBitmap . create Bitmap ( 0 , 0 , ĠBitmap . Config . RGB _ 5 6 5 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠInternal ĠClasses Ġ---------------------------------------------------------------------------- ĊĠĠĠ Ġclass ĠInternal Ingredient ( var Ġingredient : ĠIng redient , Ġvar Ġamount : ĠQuantity , Ġvar Ġnotes : ĠString , Ġvar Ġstatus : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠIN GRE DI ENT Ġ= Ġ" a " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠA MOUNT Ġ= Ġ" b " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠNOT ES Ġ= Ġ" c " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSTATUS Ġ= Ġ" d " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġconstructor ( data : ĠJSONObject ): Ġthis ( Ingredient ( data . opt JSONObject ( ING RE DI ENT )), ĠQuantity ( data . opt JSONObject ( AMOUNT )), Ġdata . opt String ( NOTES , Ġ""), Ġdata . opt Boolean ( STATUS , Ġfalse )) ĊĠĠĠĠĠĠĠ Ġfun ĠtoJSON (): ĠJSONObject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠJSONObject () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata . put ( ING RE DI ENT , Ġingredient . toJSON ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata . put ( AMOUNT , Ġamount . toJSON ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata . put ( NOTES , Ġnotes ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata . put ( STATUS , Ġstatus ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdata ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }