package Ġme . rob bin . nil music . ui . components Ċ Ċ import Ġandroidx . compose . animation . animate Ċ import Ġandroidx . compose . animation . animate Content Size Ċ import Ġandroidx . compose . animation . core . Linear E asing Ċ import Ġandroidx . compose . animation . core . t ween Ċ import Ġandroidx . compose . foundation . Text Ċ import Ġandroidx . compose . foundation . background Ċ import Ġandroidx . compose . foundation . layout .* Ċ import Ġandroidx . compose . foundation . selection . selectable Ċ import Ġandroidx . compose . material . Icon Ċ import Ġandroidx . compose . material . Material Theme Ċ import Ġandroidx . compose . material . ripple . R ipple Indication Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . remember Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . graphics . Color Ċ import Ġandroidx . compose . ui . graphics . vector . Vector Asset Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġdev . chr is ban es . ac comp an ist . in sets . status Bars Height Ċ import Ġme . rob bin . nil music . Music Screen Ċ import Ġjava . util .* Ċ Ċ @ Composable Ċ fun ĠMusic Tab AppBar ( ĊĠĠĠ Ġall Scre ens : ĠList < Music Screen >, ĊĠĠĠ Ġon Tab Selected : Ġ( Music Screen ) Ġ-> ĠUnit , ĊĠĠĠ Ġcurrent Screen : ĠMusic Screen , ĊĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier Ċ ) Ġ{ ĊĠĠĠ ĠColumn ( modifier Ġ= ĠModifier . background ( Color . C yan )) Ġ{ ĊĠĠĠĠĠĠĠ ĠSp acer ( modifier Ġ= ĠModifier . fill Max Width (). status Bars Height ()) ĊĠĠĠĠĠĠĠ ĠRow ( modifier Ġ= Ġmodifier . preferred Height ( Tab Height ). fill Max Width ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġall Scre ens . forEach Ġ{ Ġscreen Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMusic Tab ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġscreen . name . toUpperCase ( Locale . ROOT ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon Ġ= Ġscreen . icon , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Selected Ġ= Ġ{ Ġon Tab Selected ( screen ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Ġ= Ġcurrent Screen Ġ== Ġscreen ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠMusic Tab ( ĊĠĠĠ Ġtext : ĠString , ĊĠĠĠ Ġicon : ĠVector Asset , ĊĠĠĠ Ġon Selected : Ġ() Ġ-> ĠUnit , ĊĠĠĠ Ġselected : ĠBoolean Ċ ) Ġ{ ĊĠĠĠ Ġval Ġcolor Ġ= ĠMaterial Theme . colors . on Surface ĊĠĠĠ Ġval Ġduration Millis Ġ= Ġif Ġ( selected ) ĠTab Fade In Animation Duration Ġelse ĠTab Fade Out Animation Duration ĊĠĠĠ Ġval Ġanim Spec Ġ= Ġremember Ġ{ ĊĠĠĠĠĠĠĠ Ġt ween < Color >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduration Millis Ġ= Ġduration Millis , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeasing Ġ= ĠLinear E asing , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelay Millis Ġ= ĠTab Fade In Animation Delay ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġtab Tint Color Ġ= Ġanimate ( ĊĠĠĠĠĠĠĠ Ġtarget Ġ= Ġif Ġ( selected ) Ġcolor Ġelse Ġcolor . copy ( alpha Ġ= ĠIn active Tab Opacity ), ĊĠĠĠĠĠĠĠ Ġanim Spec Ġ= Ġanim Spec ĊĠĠĠ Ġ) ĊĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. animate Content Size () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( 1 6 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. preferred Height ( Tab Height ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. selectable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Ġ= Ġselected , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġon Selected , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindication Ġ= ĠR ipple Indication ( bounded Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠIcon ( asset Ġ= Ġicon , Ġt int Ġ= Ġtab Tint Color ) ĊĠĠĠĠĠĠĠ Ġif Ġ( selected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSp acer ( modifier Ġ= ĠModifier . padding ( 1 2 . dp )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġtext , Ġcolor Ġ= Ġtab Tint Color ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġval ĠTab Height Ġ= Ġ 5 6 . dp Ċ private Ġconst Ġval ĠIn active Tab Opacity Ġ= Ġ 0 . 6 0 f Ċ Ċ private Ġconst Ġval ĠTab Fade In Animation Duration Ġ= Ġ 1 5 0 Ċ private Ġconst Ġval ĠTab Fade In Animation Delay Ġ= Ġ 1 0 0 Ċ private Ġconst Ġval ĠTab Fade Out Animation Duration Ġ= Ġ 1 0 0