package Ġcom . ut n . fr ba . des ar rol lo mobile . h unter . ui . fragment Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . provider . Media Store Ċ import Ġandroid . util . Log Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . core . graphics . drawable . to Bitmap Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġcom . google . zx ing . Barcode Format Ċ import Ġcom . jo urney apps . barcode scanner . Barcode Encoder Ċ import Ġcom . ut n . fr ba . des ar rol lo mobile . h unter . R Ċ import Ġcom . ut n . fr ba . des ar rol lo mobile . h unter . extensions . show Fragment Ċ import Ġcom . ut n . fr ba . des ar rol lo mobile . h unter . service . models . Game Ċ import Ġcom . ut n . fr ba . des ar rol lo mobile . h unter . utils . Permission Handler Ċ import Ġcom . ut n . fr ba . des ar rol lo mobile . h unter . view model . Create Game ViewModel Ċ import Ġkotlinx . android . synt hetic . main . fragment _ create _ game _ step _ summary .* Ċ Ċ class ĠCreate Game Fragment Step Summary Ġ: ĠFragment ( R . layout . fragment _ create _ game _ step _ summary ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠREQUEST _ WRITE _ EXTERNAL _ STORAGE Ġ= Ġ 2 2 0 ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġgame ViewModel : ĠCreate Game ViewModel ĊĠĠĠ Ġprivate Ġvar Ġgame : ĠGame ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġgame ViewModel Ġ= ĠViewModel Provider ( require Activity ()). get ( Create Game ViewModel :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġgame ViewModel . get Game Created (). observe ( view Lifecycle Owner , ĠObserver Ġ{ Ġgame Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . game Ġ= Ġgame ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate UI () ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĊĠĠĠĠĠĠĠ Ġok _ button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Fragment ( Choose Game Fragment (), Ġfalse , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate UI () Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( this . game Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbarcode Encoder Ġ= ĠBar code Encoder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap : ĠBitmap Ġ= Ġbarcode Encoder . encode Bitmap ( this . game !!. win Code , ĠBar code Format . QR _ CODE , Ġ 5 1 2 , Ġ 5 1 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġqr . setImage Bitmap ( bitmap ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdownload _ qr . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Permission Handler . are Permissions Granted ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( Manifest . permission . WRITE _ EXTERNAL _ STORAGE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdownload QR ( game !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPermission Handler . request Permissions ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( Manifest . permission . WRITE _ EXTERNAL _ STORAGE ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠREQUEST _ WRITE _ EXTERNAL _ STORAGE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjoin _ code . text Ġ= Ġresources . getString ( R . string . access _ code , Ġgame ?. id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Game ĠSummary ", Ġe . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġqr . setBackground Resource ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdownload _ qr . setOnClickListener ( null ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġinv itation Ġ= Ġresources . getText ( R . string . game _ inv itation ) ĊĠĠĠĠĠĠĠ Ġvar Ġgame Id Ġ= Ġgame ViewModel . getId (). toString () ĊĠĠĠĠĠĠĠ Ġshare _ button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshare Intent : ĠIntent Ġ= ĠIntent (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Ġ= ĠIntent . ACTION _ SEND ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( Intent . EXTRA _ TEXT , Ġ"$ inv itation Ġ$ game Id ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġ" text / plain " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( share Intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdownload QR ( game : ĠGame ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġyour Bitmap Ġ= Ġqr . drawable . to Bitmap () ĊĠĠĠĠĠĠĠ ĠMedia Store . Images . Media . insert Image ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (). content Resolver , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġyour Bitmap , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" H unter _ win _ qr _${ game . id }. jpg ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" QR Ġdel ĠTes oro Ġ${ game . id }" ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġ" QR ĠDesc arg ado . ĠRe vis Ã¡ Ġtu Ġcar pe ta Ġde Ġim Ã¡ genes .", ĠToast . LENGTH _ LONG ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( ĊĠĠĠĠĠĠĠ Ġrequest Code : ĠInt , ĊĠĠĠĠĠĠĠ Ġpermissions : ĠArray < out ĠString >, ĊĠĠĠĠĠĠĠ Ġgrant Results : ĠInt Array ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Request Permissions Result ( request Code , Ġpermissions , Ġgrant Results ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠREQUEST _ WRITE _ EXTERNAL _ STORAGE Ġ&& Ġgrant Results [ 0 ] Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdownload QR ( game !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊĊ