package Ġcom . tx w studio . app . timetable . ui . maps viewer Ċ Ċ import Ġandroid . content . Activity NotFoundException Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . document file . provider . Document File Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . preference . Preference Manager Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġcom . tx w studio . app . timetable . R Ċ import Ġcom . tx w studio . app . timetable . databinding . Fragment Maps Viewer Binding Ċ import Ġcom . tx w studio . app . timetable . ui . preferences . PREFER ENCE _ MAP _ DATA _ TYPE Ċ import Ġcom . tx w studio . app . timetable . ui . preferences . PREFER ENCE _ MAP _ PATH Ċ import Ġcom . tx w studio . app . timetable . utilities . DATA _ TYPE _ IMAGE Ċ import Ġcom . tx w studio . app . timetable . utilities . DATA _ TYPE _ PDF Ċ Ċ /** Ċ Ġ* ĠImplementation Ġof ĠTouch ImageView . Ċ Ġ*/ Ċ class ĠMaps Viewer Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance () Ġ= ĠMaps Viewer Fragment () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġshared Pref : ĠSharedPreferences ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠFragment Maps Viewer Binding ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCheck Ġimage Ġfile Ġtype , Ġopen Ġit Ġup Ġif Ġit 's Ġpdf . ĊĠĠĠĠĠĠĠ Ġshared Pref Ġ= ĠPreference Manager . getDefault SharedPreferences ( require Context ()) ĊĠĠĠĠĠĠĠ Ġif Ġ( shared Pref . getString ( PREFER ENCE _ MAP _ DATA _ TYPE , ĠDATA _ TYPE _ IMAGE ) Ġ== ĠDATA _ TYPE _ PDF ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen Pdf Then Navigate Up () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠFragment Maps Viewer Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġsetup ToolBar () ĊĊĠĠĠĠĠĠĠ Ġload Map Image () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . id . home Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate Up () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup ToolBar () Ġ{ ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ĠAppCompatActivity ). set Support ActionBar ( binding . toolbar Maps Viewer Frag ) ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ĠAppCompatActivity ). support ActionBar ?. set Display Show Title Enabled ( false ) ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ĠAppCompatActivity ). support ActionBar ?. set Display Home As Up Enabled ( true ) ĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOpen ĠPDF Ġwhen Ġthe Ġfile Ġtype Ġis ĠPDF Ġand Ġentry Ġpoint Ġisn 't Ġfrom ĠHome ViewPager Fragment . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġopen Pdf Then Navigate Up () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmap Pdf File Uri In String Ġ= Ġshared Pref . getString ( PREFER ENCE _ MAP _ PATH , Ġ"") ĊĊĠĠĠĠĠĠĠ Ġval Ġuri Ġ= ĠUri . parse ( map Pdf File Uri In String ) ĊĠĠĠĠĠĠĠ Ġval Ġtarget Ġ= ĠIntent ( Intent . ACTION _ VIEW ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetData And Type ( uri , ĠDATA _ TYPE _ PDF ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflags Ġ= ĠIntent . FLAG _ ACTIVITY _ NO _ HISTORY ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Flags ( Intent . FLAG _ GRANT _ READ _ URI _ PERMISSION ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIntent . create Chooser ( target , Ġjava . lang . String . valueOf ( R . string . pdf Open With Msg )) ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate Up () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠActivity NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠS uit able Ġapp Ġnot Ġfound . ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( require View (), ĠR . string . pdf No App Msg , ĠSn ackbar . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠSecurity Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFile Ġnot Ġfound . ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( require View (), ĠR . string . pdf File NotFound , ĠSn ackbar . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠUnknown Ġexception . ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( require View (), ĠR . string . file Read ErrorMsg , ĠSn ackbar . LENGTH _ SHORT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Map Image () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGet Ġmap Ġimage Ġpath Ġfrom Ġshared Ġpreferences . ĊĠĠĠĠĠĠĠ Ġval Ġmap Image Path Ġ= Ġshared Pref . getString ( PREFER ENCE _ MAP _ PATH , Ġ"") ĊĊĠĠĠĠĠĠĠ Ġ// ĠCheck Ġif Ġmap Ġpath Ġstring Ġhas Ġempty Ġvalue Ġor Ġnot . ĊĠĠĠĠĠĠĠ Ġmap Image Path ?. isNotEmpty ()?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIf Ġit 's Ġempty , Ġwe Ġtreat Ġit Ġas Ġnot Ġset , Ġdo Ġnothing . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠPath Ġstring Ġnot Ġempty , Ġcheck Ġfile Ġexists Ġor Ġnot . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Image Uri Ġ= ĠUri . parse ( map Image Path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Map Image Exists Then Set Image ( map Image Uri ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCheck Ġimage Ġfile Ġexist Ġbefore Ġset Image Ġto Ġprevent Ġcrashes . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġmap Image Uri ĠParsed Ġfile Ġuri . ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġcheck Map Image Exists Then Set Image ( map Image Uri : ĠUri ) Ġ{ ĊĠĠĠĠĠĠĠ ĠDocument File . from Single Uri ( require Context (), Ġmap Image Uri )?. exists ()?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . linear Layout Maps Viewer Frag Image Not Set . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . touch ImageView . setImage URI ( map Image Uri ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }