/* Ċ Ġ* Ġ ĠCopyright Ġ 2 0 2 0 ĠB am mell ab Ġ/ ĠJames ĠAnd reas Ċ Ġ* Ġ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* Ġ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* ĠĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ġ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* Ġ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* Ġ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġ Ġlimitations Ġunder Ġthe ĠLicense Ċ Ġ*/ Ċ Ċ package Ġcom . bam mell ab . mot m . detail Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . Html Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . card view . widget . Card View Ċ import Ġcom . bam mell ab . mot m . R Ċ import Ġcom . bam mell ab . mol lib . data . Cor pus Ċ import Ġcom . bam mell ab . mol lib . data . Cor pus . mot m Title Get Ċ import Ġcom . bam mell ab . mol lib . data . Mot m Image Download Ċ import Ġcom . bam mell ab . mol lib . data . P DB s Ċ import Ġcom . bam mell ab . mol lib . data . URLs . P DB _ IMAGE _ WEB _ PREFIX Ċ import Ġcom . bam mell ab . mol lib . data . URLs . P DB _ MOT M _ PNG _ WEB _ PREFIX Ċ import Ġcom . bam mell ab . mol lib . data . URLs . P DB _ MOT M _ PREFIX Ċ import Ġcom . bam mell ab . mol lib . data . URLs . P DB _ MOT M _ SUFFIX Ċ import Ġcom . bam mell ab . mol lib . data . URLs . R CS B _ MOT M _ IMAGE _ PREFIX Ċ import Ġcom . bam mell ab . mol lib . data . URLs . R CS B _ P DB _ INFO _ PREFIX Ċ import Ġcom . bam mell ab . mol lib . data . URLs . R CS B _ P DB _ INFO _ SUFFIX Ċ import Ġcom . bam mell ab . mot m . graphics . Mot m Graphics Activity Ċ import Ġcom . bam mell ab . mot m . pdb . P db Fetcher Coroutine Ċ import Ġcom . bam mell ab . mot m . util . Prefs Util Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġcom . squareup . pic asso . Pic asso Ċ import Ġtim ber . log . Tim ber Ċ Ċ class ĠMot m Detail Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmot m Description : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpdb Date : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpdb Layout : ĠLinearLayout ĊĊĊĠĠĠ Ġprivate Ġvar Ġmot m Number : ĠInt Ġ= Ġ 0 ĊĊĠĠĠ Ġ@ Suppress Lint (" SetText I 1 8 n ") ĊĠĠĠ Ġpublic Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . pdb _ detail ) ĊĠĠĠĠĠĠĠ Ġval Ġmot m Title Ġ= ĠfindViewById < TextView >( R . id . card _ detail _ mot m _ title ) ĊĠĠĠĠĠĠĠ Ġmot m Description Ġ= ĠfindViewById ( R . id . card _ detail _ mot m _ description ) ĊĠĠĠĠĠĠĠ Ġpdb Date Ġ= ĠfindViewById ( R . id . card _ detail _ mot m _ date ) ĊĠĠĠĠĠĠĠ Ġpdb Layout Ġ= ĠfindViewById ( R . id . pdb _ detail _ layout ) ĊĠĠĠĠĠĠĠ Ġval Ġmot m Detail Card Ġ= ĠfindViewById < Card View >( R . id . mot m _ detail _ card ) ĊĊĠĠĠĠĠĠĠ Ġ// val Ġintent Ġ= Ġintent ĊĠĠĠĠĠĠĠ Ġval Ġmot m Number String Ġ= Ġintent . getString Extra ( MOT M _ EXTRA _ NAME ) ĊĠĠĠĠĠĠĠ Ġ// Ġbe Ġcareful Ġabout Ġar riving Ġback Ġhere Ġfrom Ġsomewhere Ġelse Ġwithout Ġthe Ġextra ĊĠĠĠĠĠĠĠ Ġif Ġ( mot m Number String Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmot m Number Ġ= ĠInteger . parseInt ( mot m Number String ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNumber FormatException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e (" Mot m Detail Activity : ĠError Ġon Ġname Ġas Ġa Ġnumber Ġ$ mot m Number String ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmot m Number Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mot m Number Ġ< Ġ 0 Ġ|| Ġmot m Number Ġ> Ġ 3 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e (" mot m Number Ġout Ġof Ġrange , Ġ% d , Ġshould Ġbe Ġbetween Ġ 0 Ġand Ġ 3 0 0 ", Ġmot m Number ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmot m Number Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Display Ġdetail Ġon Ġnumber Ġ% d ", Ġmot m Number ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmot m Number Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsupport ActionBar !!. set Display Home As Up Enabled ( true ) Ċ Ċ // ĠĠĠĠĠĠĠ Ġval Ġcol lap sing Toolbar Ġ= ĠfindViewById < Col lap sing Toolbar Layout >( R . id . coll ap sing _ toolbar ) Ċ // Ċ // ĠĠĠĠĠĠĠ Ġcol lap sing Toolbar . set Expanded Title TextAppearance ( R . style . Expanded AppBar ) Ċ // ĠĠĠĠĠĠĠ Ġcol lap sing Toolbar . set Collapsed Title TextAppearance ( R . style . Collapsed AppBar ) ĊĊĠĠĠĠĠĠĠ Ġval Ġmot m Name Ġ= Ġmot m Title Get ( this . mot m Number ) Ċ // ĠĠĠĠĠĠĠ Ġcol lap sing Toolbar . title Ġ= Ġmot m Name ĊĠĠĠĠĠĠĠ Ġmot m Title . text Ġ= Ġmot m Name ĊĊĠĠĠĠĠĠĠ Ġmot m Description . text Ġ= ĠCor pus . mot m Tag Lines Get ( this . mot m Number - 1 ) ĊĊĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠ Ġ* Ġgetting Ġf anci er Ġon Ġassemb ling Ġthe ĠMot m Ġdate Ġin Ġthe Ġdetail Ġview ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġvar Ġdesc Raw : ĠString ĊĠĠĠĠĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder () ĊĊĠĠĠĠĠĠĠ Ġsb . append ("< i >") ĊĠĠĠĠĠĠĠ Ġsb . append ( Cor pus . mot m Date ByKey ( this . mot m Number )) ĊĠĠĠĠĠĠĠ Ġsb . append ("</ i >< br >") ĊĊĠĠĠĠĠĠĠ Ġdesc Raw Ġ= Ġsb . toString () ĊĊĠĠĠĠĠĠĠ Ġdesc Raw Ġ= Ġdesc Raw . replace ("\ n ", Ġ"< br >") ĊĠĠĠĠĠĠĠ Ġval Ġdesc : ĠCharSequence ĊĊĠĠĠĠĠĠĠ Ġ// Ġpain ful Ġfrom Html Ġversion Ġhandling ĊĠĠĠĠĠĠĠ Ġdesc Ġ= Ġif Ġ( android . os . Build . VERSION . SDK _ INT Ġ>= Ġandroid . os . Build . VERSION _ CODES . N ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHtml . from Html ( desc Raw , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHtml . FROM _ HTML _ MODE _ LEG ACY ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHtml . from Html ( desc Raw ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpdb Date . text Ġ= Ġdesc ĊĊĠĠĠĠĠĠĠ Ġload Back drop () ĊĊĠĠĠĠĠĠĠ Ġmot m Detail Card . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ VIEW ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . data Ġ= ĠUri . parse ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠP DB _ MOT M _ PREFIX ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġmot m Number ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠP DB _ MOT M _ SUFFIX ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġload Back drop () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠimageView Ġ= ĠfindViewById < ImageView >( R . id . backdrop ) ĊĠĠĠĠĠĠĠ Ġvar Ġpng URL : ĠString Ċ Ċ // ĠĠĠĠĠĠĠ Ġval Ġimage Ġ= ĠCor pus . mot m ImageList Get ( mot m Number ) Ċ // ĠĠĠĠĠĠĠ Ġval Ġurl Ġ= ĠR CS B _ MOT M _ IMAGE _ PREFIX Ġ+ Ġimage ĊĊĠĠĠĠĠĠĠ Ġval Ġmot m P ng Url Ġ= ĠP DB _ MOT M _ PNG _ WEB _ PREFIX ĊĠĠĠĠĠĠĠ Ġpng URL Ġ= ĠMot m Image Download . mot m T iff Image Name ( mot m Number ) ĊĠĠĠĠĠĠĠ Ġpng URL Ġ= Ġ"$ mot m P ng Url $ png URL . png ? raw = true " ĊĠĠĠĠĠĠĠ Ġif Ġ( png URL Ġ== Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage Ġ= ĠCor pus . mot m ImageList Get ( mot m Number ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpng URL Ġ= ĠR CS B _ MOT M _ IMAGE _ PREFIX Ġ+ Ġimage ĊĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ ĠG lide . with ( this ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( png URL ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fit Center () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( imageView ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPic asso . get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( png URL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. center Inside () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. resize ( 4 0 0 , Ġ 4 0 0 ) ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. error ( R . drawable . ic _ no _ wifi ) ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. placeholder ( R . drawable . ic _ message _ 2 4 px ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( imageView ) ĊĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠ Ġ* Ġpopulate Ġthe ĠMot m Ġdetail Ġre cycler view Ġwith Ġthe ĠP DB Ġentries Ġdiscussed ĊĠĠĠĠĠĠĠĠ Ġ* Ġin Ġthe Ġmonthly Ġfeature . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġpdb s Ġ= ĠP DB s . pdb sBy Month . get ( mot m Number ) ĊĠĠĠĠĠĠĠ Ġval Ġpdb s String Array Ġ= Ġpdb s . to Typed Array () ĊĠĠĠĠĠĠĠ Ġfor Ġ( pdb Id Ġin Ġpdb s ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠLayoutInflater . from ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate ( R . layout . pdb _ card , Ġpdb Layout , Ġfalse ) Ġas ĠCard View ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġpdb Layout . addView ( view ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpdb Card Title Ġ= Ġview . findViewById < TextView >( R . id . card _ detail _ pdb _ identifier ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpdb Card Text Ġ= Ġview . findViewById < TextView >( R . id . card _ detail _ pdb _ description ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġim Ġ= Ġview . findViewById < ImageView >( R . id . card _ detail _ pdb _ image ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpdb Link Ġ= Ġview . findViewById < ImageView >( R . id . card _ detail _ rc sb _ link ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pdb Card Title Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpdb Card Title . text Ġ= Ġpdb Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠimageUrl Ġ= ĠP DB _ IMAGE _ WEB _ PREFIX Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠimageUrl Ġ= ĠimageUrl Ġ+ Ġpdb Id Ġ+ Ġ"_ as ym _ r _ 5 0 0 . jpg " Ġ// Ġthese Ġimages Ġhave Ġvan ished ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġnow Ġthe ĠP DB Ġimages Ġare Ġpartition ed Ġinto Ġfolders Ġbased Ġon Ġthe Ġfirst ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdigit Ġof Ġthe ĠP DB Ġname . ĠĠ ĠGithub Ġonly Ġallows Ġ 1 0 0 0 Ġimages Ġper Ġfolder . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠHence Ġthe Ġpartition ing . ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠimageUrl Ġ+= Ġpdb Id [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ ĠimageUrl Ġ+= Ġ"/" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠimageUrl Ġ= Ġ"$ imageUrl $ pdb Id . png ? raw = true " ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . v (" image Ġurl Ġis Ġ% s ", ĠimageUrl ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( imageUrl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fit Center () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( im ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġpdb Link . tag Ġ= Ġpdb Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġim . tag Ġ= Ġpdb Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . tag Ġ= Ġpdb Id ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġrespond Ġto Ġa Ġclick Ġon Ġthe ĠR CS B ĠP DB Ġimage view Ġbutton ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠĠĠ ĠVector Ġto Ġthe ĠP DB Ġinfo Ġentry Ġon Ġthe ĠR CS B Ġwebsite ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠA Ġpref Ġsetting Ġdetermines Ġif Ġthe Ġaction Ġshould Ġbe Ġconfirmed ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpdb Link . setOnClickListener Ġ{ Ġv Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Prefs Util . prefs Touch To Open Setting ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpdb Of Interest Ġ= Ġv . tag Ġas ĠString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent R CS B Ġ= ĠIntent ( Intent . ACTION _ VIEW ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent R CS B . data Ġ= ĠUri . parse ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR CS B _ P DB _ INFO _ PREFIX ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġpdb Of Interest Ġ+ ĠR CS B _ P DB _ INFO _ SUFFIX ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" start Ġactivity Ġintent : Ġ$ intent R CS B , Ġ$ intent R CS B . data ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent R CS B ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e ( e , Ġ" exception Ġon ĠstartActivity ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsn ackbar Ġ= ĠSn ackbar . make ( v , Ġ" R CS B ĠP DB Ġinfo ", ĠSn ackbar . LENGTH _ LONG ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpdb Of Interest Ġ= Ġv . tag Ġas ĠString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsn ackbar . setAction (" View Ġwebsite ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent R CS B Ġ= ĠIntent ( Intent . ACTION _ VIEW ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent R CS B . data Ġ= ĠUri . parse ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR CS B _ P DB _ INFO _ PREFIX ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġpdb Of Interest Ġ+ ĠR CS B _ P DB _ INFO _ SUFFIX ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent R CS B ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsn ackbar . show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġrespond Ġto Ġa Ġclick Ġon Ġthe Ġmolecule Ġ( P DB ) ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠĠĠ Ġexperiment Ġwith Ġmaster Ġ/ Ġdetail ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġim . setOnClickListener Ġ{ Ġv Ġ-> Ġstart 3 d Viewer ( v , Ġpdb s String Array ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . setOnClickListener Ġ{ Ġv Ġ-> Ġstart 3 d Viewer ( v , Ġpdb s String Array ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġload Ġthe Ġtext Ġfield Ġvia Ġretrofit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfetch er Ġ= ĠP db Fetcher Coroutine ( pdb Id , Ġpdb Card Text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfetch er . pdb Fetcher Coroutine () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġstart 3 d Viewer ( v : ĠView , Ġpdb s String Array : ĠArray < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsn ackbar Ġ= ĠSn ackbar . make ( v , ĠR . string . sn ackbar _ go _ to _ 3 d , ĠSn ackbar . LENGTH _ LONG ) ĊĊĠĠĠĠĠĠĠ Ġval Ġpdb Of Interest Ġ= Ġv . tag Ġas ĠString ĊĠĠĠĠĠĠĠ Ġif Ġ( pdb Of Interest . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( Prefs Util . prefs Touch To Open Setting ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġi Ġ= Ġpdb s String Array . indexOf ( pdb Of Interest ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Mot m Detail Activity , ĠMot m Graphics Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMot m Graphics Activity . P DB _ NAME _ LIST , Ġpdb s String Array ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMot m Graphics Activity . P DB _ NAME _ LIST _ INDEX , Ġi ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" Red undant Sam Constructor ") ĊĠĠĠĠĠĠĠ Ġsn ackbar . setAction ( R . string . sn ackbar _ go _ to _ 3 d _ start , ĠView . OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġget Ġthe Ġindex Ġof Ġour Ġchosen ĠP DB Ġto Ġpass Ġalong Ġto Ġthe Ġviewer ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ< Ġpdb s String Array . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pdb s String Array [ i ] Ġ== Ġpdb Of Interest ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ< Ġpdb s String Array . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Mot m Detail Activity , ĠMot m Graphics Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMot m Graphics Activity . P DB _ NAME _ LIST , Ġpdb s String Array ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMot m Graphics Activity . P DB _ NAME _ LIST _ INDEX , Ġi ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġsn ackbar . show () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġthis Ġbrings Ġthe ĠUI Ġback Ġto Ġwhere Ġit Ġleft Ġoff Ġwhen Ġthe Ġdetail Ġwas Ġselected ĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTim ber . i (" Option Ġitem Ġselected ") ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . id . home Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Back Pressed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠM OT M _ EXTRA _ NAME Ġ= Ġ" mot m " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠM OT M _ EXTRA _ CATEGORY Ġ= Ġ" category " ĊĠĠĠ Ġ} Ċ } Ċ