package Ġcom . ja ver na ut . what the codec . presentation . root . ui Ċ Ċ import Ġandroidx . compose . foundation . layout . Row Scope Ċ import Ġandroidx . compose . foundation . layout . fill Max Height Ċ import Ġandroidx . compose . foundation . layout . padding Ċ import Ġandroidx . compose . material . Sca ffold Ċ import Ġandroidx . compose . material . Scroll able Tab Row Ċ import Ġandroidx . compose . material . Tab Ċ import Ġandroidx . compose . material . Tab Row Defaults Ċ import Ġandroidx . compose . material . Text Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . remember Coroutine Scope Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . res . string Resource Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġcom . google . ac comp an ist . pager . Experimental Pager Api Ċ import Ġcom . google . ac comp an ist . pager . Horizontal Pager Ċ import Ġcom . google . ac comp an ist . pager . Pager State Ċ import Ġcom . google . ac comp an ist . pager . pager Tab Indicator Offset Ċ import Ġcom . google . ac comp an ist . pager . remember Pager State Ċ import Ġcom . ja ver na ut . what the codec . R Ċ import Ġcom . ja ver na ut . what the codec . presentation . audio . ui . Audio Page Ċ import Ġcom . ja ver na ut . what the codec . presentation . compose . common . W tc Top AppBar Ċ import Ġcom . ja ver na ut . what the codec . presentation . root . view model . Media File ViewModel Ċ import Ġcom . ja ver na ut . what the codec . presentation . root . view model . model . Available Tab Ċ import Ġcom . ja ver na ut . what the codec . presentation . subtitle . ui . Subtitle Page Ċ import Ġcom . ja ver na ut . what the codec . presentation . video . ui . Video Page Ċ import Ġkotlinx . coroutines . launch Ċ Ċ @ Composable Ċ @ Opt In ( Experimental Pager Api :: class ) Ċ fun ĠMain Screen ( ĊĠĠĠ Ġtabs To Show : ĠList < Available Tab >, ĊĠĠĠ Ġmedia File ViewModel : ĠMedia File ViewModel , ĊĠĠĠ Ġmenu Actions : Ġ@ Composable ĠRow Scope . () Ġ-> ĠUnit Ġ= Ġ{} Ċ ) Ġ{ ĊĠĠĠ Ġval Ġpager State Ġ= Ġremember Pager State ( page Count Ġ= Ġtabs To Show . size ) ĊĠĠĠ ĠScaffold ( ĊĠĠĠĠĠĠĠ Ġtop Bar Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMain Screen Top AppBar ( tabs To Show Ġ= Ġtabs To Show , Ġpager State , Ġmenu Actions ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠMain Screen Content ( Modifier . padding ( it ), Ġtabs To Show , Ġpager State , Ġmedia File ViewModel ) ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ @ Composable Ċ @ Experimental Pager Api Ċ private Ġfun ĠMain Screen Top AppBar ( ĊĠĠĠ Ġtabs To Show : ĠList < Available Tab >, ĊĠĠĠ Ġpager State : ĠP ager State , ĊĠĠĠ Ġmenu Actions : Ġ@ Composable ĠRow Scope . () Ġ-> ĠUnit Ġ= Ġ{} Ċ ) Ġ{ ĊĠĠĠ ĠW tc Top AppBar ( ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscope Ġ= Ġremember Coroutine Scope () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠScroll able Tab Row ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedge Padding Ġ= Ġ 0 . dp , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠOur Ġselected Ġtab Ġis Ġour Ġcurrent Ġpage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected TabIndex Ġ= Ġpager State . currentPage , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠOverride Ġthe Ġindicator , Ġusing Ġthe Ġprovided Ġpager Tab Indicator Offset Ġmodifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindicator Ġ= Ġ{ Ġtab Positions Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTab Row Defaults . Indicator ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠModifier . pager Tab Indicator Offset ( pager State , Ġtab Positions ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAdd Ġtabs Ġfor Ġall Ġof Ġour Ġpages ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtabs To Show . forEach Indexed Ġ{ Ġindex , Ġtab To Show Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTab ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . fill Max Height (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ{ ĠText ( string Resource ( id Ġ= Ġtab To Show . title ). toUpperCase ()) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Ġ= Ġpager State . currentPage Ġ== Ġindex , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpager State . animate Scroll To Page ( index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġactions Ġ= Ġmenu Actions ĊĠĠĠ Ġ) Ċ } Ċ Ċ private Ġval ĠAvailable Tab . title : ĠInt ĊĠĠĠ Ġget () Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠ ĠAvailable Tab . VIDEO Ġ-> ĠR . string . tab _ video ĊĠĠĠĠĠĠĠ ĠAvailable Tab . AUDIO Ġ-> ĠR . string . tab _ audio ĊĠĠĠĠĠĠĠ ĠAvailable Tab . SUB TIT LES Ġ-> ĠR . string . tab _ subtitle s ĊĠĠĠ Ġ} Ċ Ċ @ Composable Ċ @ Experimental Pager Api Ċ private Ġfun ĠMain Screen Content ( ĊĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier , ĊĠĠĠ Ġtabs To Show : ĠList < Available Tab >, ĊĠĠĠ Ġpager State : ĠP ager State , ĊĠĠĠ ĠviewModel : ĠMedia File ViewModel Ċ ) Ġ{ ĊĠĠĠ ĠHorizontal Pager ( pager State , Ġmodifier ) Ġ{ Ġpage Ġ-> ĊĠĠĠĠĠĠĠ Ġwhen Ġ( tabs To Show [ page ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAvailable Tab . VIDEO Ġ-> ĠVideo Page ( viewModel ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAvailable Tab . AUDIO Ġ-> ĠAudio Page ( viewModel ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAvailable Tab . SUB TIT LES Ġ-> ĠSub title Page ( viewModel ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ