package Ġcom . github . mal it spl us . sh iz ur un otes . ui . s rt Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . navigation . find Nav Controller Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġcom . github . mal it spl us . sh iz ur un otes . R Ċ import Ġcom . github . mal it spl us . sh iz ur un otes . common . I 1 8 N Ċ import Ġcom . github . mal it spl us . sh iz ur un otes . data . S rt Panel Ċ import Ġcom . github . mal it spl us . sh iz ur un otes . databinding . Fragment S rt Panel Binding Ċ import Ġcom . github . mal it spl us . sh iz ur un otes . ui . base . ViewType Ċ import Ġcom . github . mal it spl us . sh iz ur un otes . ui . base . ViewType Adapter Ċ import Ġcom . github . mal it spl us . sh iz ur un otes . ui . shared . Shared ViewModel S rt Ċ import Ġcom . github . mal it spl us . sh iz ur un otes . ui . shared . Shared ViewModel S rt Factory Ċ import Ġcom . github . mal it spl us . sh iz ur un otes . user . User Settings Ċ import Ġcom . github . mal it spl us . sh iz ur un otes . utils . Utils Ċ import Ġkotlin . math . floor Ċ Ċ class ĠS rt Panel Fragment Ġ: ĠFragment (), ĠOn S rt ClickListener < S rt Panel > Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠFragment S rt Panel Binding ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġshared S rt : ĠShared ViewModel S rt ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġs rt Panel VM : ĠS rt Panel ViewModel ĊĠĠĠ Ġprivate Ġval Ġmax Span Ġ= Ġfloor ( Utils . get Screen DP Width () Ġ/ Ġ 6 6 . 0 ). toInt () ĊĠĠĠ Ġprivate Ġval Ġs rt Panel Adapter Ġby Ġlazy Ġ{ ĠView Type Adapter < ViewType < *> >( on Item ActionListener Ġ= Ġthis ) Ġ} ĊĠĠĠ Ġprivate Ġvar Ġs rt Panel : ĠS rt Panel ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġshared S rt Ġ= ĠViewModel Provider ( require Activity ())[ Shared ViewModel S rt :: class . java ] ĊĠĠĠĠĠĠĠ Ġs rt Panel VM Ġ= ĠViewModel Provider ( this , ĠShared ViewModel S rt Factory ( shared S rt ))[ S rt Panel ViewModel :: class . java ] ĊĠĠĠĠĠĠĠ Ġs rt Panel Ġ= Ġshared S rt . selected S rt ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠFragment S rt Panel Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġbinding . s rt Panel Toolbar . menu . find Item ( R . id . menu _ s rt _ show _ reading ). isChecked Ġ= ĠUser Settings . get (). get Show S rt Reading () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġwith Ġ( binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs rt Panel Toolbar . set Navigation OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . find Nav Controller (). navigate Up () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġs rt Panel Toolbar . title Ġ= Ġs rt Panel ?. reading Ġ?: ĠI 1 8 N . getString ( R . string . text _ s rt _ blank ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs rt Panel Toolbar . setOn MenuItem ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ s rt _ show _ reading Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . isChecked Ġ= Ġ! it . isChecked ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUser Settings . get (). set Show S rt Reading ( it . isChecked ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs rt Panel VM . is Reading Visible Ġ= Ġit . isChecked ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs rt Panel Adapter . set Updated List ( s rt Panel VM . view List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs rt Panel Adapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġs rt Panel Adapter . set Updated List ( s rt Panel VM . view List ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Ġ( s rt Panel Recycler ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġs rt Panel Adapter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠGrid LayoutManager ( context , Ġmax Span ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspan Size Lookup Ġ= Ġobject Ġ: ĠGrid LayoutManager . Span Size Lookup () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Span Size ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( s rt Panel Adapter . getItem ViewType ( position )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . item _ grid _ icon _ s rt Ġ-> Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġmax Span ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon S rt Panel Clicked ( item : ĠS rt Panel ) Ġ{ ĊĠĠĠĠĠĠĠ Ġshared S rt . selected S rt Ġ= Ġitem ĊĠĠĠĠĠĠĠ Ġshared S rt . is From List Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( S rt Panel Fragment Directions . action Nav S rt Panel To Nav S rt Panel ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Item Clicked ( position : ĠInt ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon S rt String Clicked ( item : ĠString ) Ġ{ ĊĠĠĠ Ġ} Ċ }