package Ġcom . example . ss jet pack comp o ses w ipe able view Ċ Ċ import Ġandroidx . compose . foundation . background Ċ import Ġandroidx . compose . foundation . gest ures . Orientation Ċ import Ġandroidx . compose . foundation . layout . Arrange ment Ċ import Ġandroidx . compose . foundation . layout . Box Ċ import Ġandroidx . compose . foundation . layout . Column Ċ import Ġandroidx . compose . foundation . layout . Row Ċ import Ġandroidx . compose . foundation . layout . fill Max Height Ċ import Ġandroidx . compose . foundation . layout . fill Max Width Ċ import Ġandroidx . compose . foundation . layout . height Ċ import Ġandroidx . compose . foundation . layout . offset Ċ import Ġandroidx . compose . foundation . layout . width Ċ import Ġandroidx . compose . foundation . shape . Rounded Corner Shape Ċ import Ġandroidx . compose . material . Experimental Material Api Ċ import Ġandroidx . compose . material . Fraction al Threshold Ċ import Ġandroidx . compose . material . Icon Ċ import Ġandroidx . compose . material . IconButton Ċ import Ġandroidx . compose . material . remember Swipe able State Ċ import Ġandroidx . compose . material . swipe able Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . ui . Alignment Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . graphics . Color Ċ import Ġandroidx . compose . ui . graphics . p ainter . Painter Ċ import Ġandroidx . compose . ui . platform . Local Density Ċ import Ġandroidx . compose . ui . unit . Dp Ċ import Ġandroidx . compose . ui . unit . Int Offset Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġkotlin . math . round ToInt Ċ Ċ @ Experimental Material Api Ċ @ Composable Ċ Ċ /** Ċ Ġ* Ġ@ param Ġleft View Icons ĠIcons Ġwhich Ġneeds Ġto Ġbe Ġshown Ġon Ġthe Ġleft Ġside Ġof Ġthe Ġscreen Ġrequires Ġa ĠTrip let Ġof ĠIcon , Ġt int Ġcolor Ġand ĠId Ġof Ġthe Ġview ĠTrip let ( Icon , ĠT int Color , ĠId ). Ċ Ġ* Ġ@ param Ġright View Icons ĠIcons Ġwhich Ġneeds Ġto Ġbe Ġshown Ġon Ġthe Ġright Ġside Ġof Ġthe Ġscreen Ġrequires Ġa ĠPair Ġof ĠIcon , Ġt int Ġcolor Ġand ĠId Ġof Ġthe Ġview ĠPair ( Icon , ĠT int Color , ĠId ). Ċ Ġ* Ġ@ param Ġposition ĠPosition Ġof Ġthe Ġcell . Ċ Ġ* Ġ@ param ĠonClick ĠOnClick Ġevent Ġof Ġthe Ġswipe able Ġview Ġreturns Ġa ĠPair Ġof ĠPosition ( Int ) Ġand ĠId ( String ) Ġof Ġthe Ġview ĠPair ( Position , ĠId ). Ċ Ġ* Ġ@ param Ġheight ĠHeight Ġof Ġthe Ġswipe able Ġview . Ċ Ġ* Ġ@ param Ġleft View BackgroundColor ĠBackground Ġcolor Ġof Ġswipe able Ġview Ġof Ġleft Ġside . Ċ Ġ* Ġ@ param Ġright View BackgroundColor ĠBackground Ġcolor Ġof Ġswipe able Ġview Ġof Ġright Ġside . Ċ Ġ* Ġ@ param Ġcorner Radius ĠCor ner Ġradius Ġof Ġthe Ġswipe able Ġviews . Ċ Ġ* Ġ@ param Ġleft Space ĠSpace Ġbetween Ġleft Ġside Ġswipe able Ġview Ġand Ġcontent Ġview Ċ Ġ* Ġ@ param Ġright Space ĠSpace Ġbetween Ġright Ġside Ġswipe able Ġview Ġand Ġcontent Ġview Ċ Ġ* Ġ@ param Ġfraction al Threshold ĠThe Ġfraction Ġ( between Ġ 0 Ġand Ġ 1 ) Ġthat Ġthe Ġthreshold Ġwill Ġbe Ġat . Ċ Ġ* Ġ@ param Ġcontent ĠPass Ġthe Ġcontent Ġof Ġyour Ġview . Ċ **/ Ċ fun ĠSw ipe Ab le Item View ( ĊĠĠĠ Ġleft View Icons : ĠArrayList < Triple < Painter , ĠColor , ĠString >>, ĊĠĠĠ Ġright View Icons : ĠArrayList < Triple < Painter , ĠColor , ĠString >>, ĊĠĠĠ Ġposition : ĠInt Ġ= Ġ 0 , ĊĠĠĠ ĠonClick : Ġ( Pair < Int , ĠString >) Ġ-> Ġ( Unit ), ĊĠĠĠ Ġswipe Direction : ĠSw ipe Direction , ĊĠĠĠ Ġleft View Width : ĠD p Ġ= Ġ 7 0 . dp , ĊĠĠĠ Ġright View Width : ĠD p Ġ= Ġ 7 0 . dp , ĊĠĠĠ Ġheight : ĠD p Ġ= Ġ 7 0 . dp , ĊĠĠĠ Ġleft View BackgroundColor : ĠColor , ĊĠĠĠ Ġright View BackgroundColor : ĠColor , ĊĠĠĠ Ġcorner Radius : ĠD p Ġ= Ġ 0 . dp , ĊĠĠĠ Ġleft Space : ĠD p Ġ= Ġ 0 . dp , ĊĠĠĠ Ġright Space : ĠD p Ġ= Ġ 0 . dp , ĊĠĠĠ Ġfraction al Threshold : ĠFloat Ġ= Ġ 0 . 3 f , ĊĠĠĠ Ġcontent : Ġ@ Composable Ġ() Ġ-> ĠUnit Ċ ) Ġ{ ĊĊĠĠĠ Ġval Ġswipe Ab le State Ġ= Ġremember Swipe able State ( initial Value Ġ= Ġ 0 ) ĊĠĠĠ Ġval Ġanchors Ġ= Ġwhen Ġ( swipe Direction ) Ġ{ ĊĠĠĠĠĠĠĠ ĠSw ipe Direction . LEFT Ġ-> Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 f Ġto Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ-( with ( Local Density . current ) Ġ{ Ġright View Width . to Px () Ġ}) Ġto Ġ 1 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠSw ipe Direction . RIGHT Ġ-> Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 f Ġto Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( with ( Local Density . current ) Ġ{ Ġleft View Width . to Px () Ġ}) Ġto Ġ 1 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 f Ġto Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ(( with ( Local Density . current ) Ġ{ Ġleft View Width . to Px () Ġ})) Ġto Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ-( with ( Local Density . current ) Ġ{ Ġright View Width . to Px () Ġ}) Ġto Ġ 2 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. height ( height ) ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvertical Arrange ment Ġ= ĠArrange ment . Center , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhorizontal Alignment Ġ= ĠAlignment . Center H orizontally ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBox ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. background ( Color . Transparent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. swipe able ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= Ġswipe Ab le State , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanchors Ġ= Ġanchors , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthresholds Ġ= Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFraction al Threshold ( fraction al Threshold ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorientation Ġ= ĠOrientation . Horizontal ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. height ( height ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhorizontal Arrange ment Ġ= Ġwhen Ġ( swipe Direction ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSw ipe Direction . BOTH Ġ-> ĠArrange ment . Space Between ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSw ipe Direction . LEFT Ġ-> ĠArrange ment . End ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠArrange ment . Start ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvertical Alignment Ġ= ĠAlignment . Center Vert ically ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWhen Ġuser ĠSw ip es Ġto Ġright Ġthe Ġleft Ġside Ġof Ġthe Ġview Ġwhich Ġis Ġvisible ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( swipe Direction Ġ== ĠSw ipe Direction . RIGHT Ġ|| Ġswipe Direction Ġ== ĠSw ipe Direction . BOTH ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRow ( modifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Height () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. width ( left View Width Ġ- Ġleft Space ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. background ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft View BackgroundColor , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshape Ġ= ĠRo unded Corner Shape ( corner Radius ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvertical Alignment Ġ= ĠAlignment . Center Vert ically , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhorizontal Arrange ment Ġ= ĠArrange ment . Center ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft View Icons . forEach Indexed Ġ{ Ġindex , Ġtrip let Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcon Button ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠPair ( Position , ĠId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick ( Pair ( position , Ġtrip let . third )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTrip let ( Icon , ĠT int Color , ĠId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcon ( p ainter Ġ= Ġtrip let . first , Ġcontent Description Ġ= Ġtrip let . third , Ġt int Ġ= Ġtrip let . second ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWhen Ġuser ĠSw ip es Ġto Ġleft Ġthe Ġright Ġside Ġof Ġthe Ġview Ġwhich Ġis Ġvisible ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( swipe Direction Ġ== ĠSw ipe Direction . LEFT Ġ|| Ġswipe Direction Ġ== ĠSw ipe Direction . BOTH ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Height () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. width ( right View Width Ġ- Ġright Space ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. background ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright View BackgroundColor , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshape Ġ= ĠRo unded Corner Shape ( corner Radius ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvertical Alignment Ġ= ĠAlignment . Center Vert ically , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhorizontal Arrange ment Ġ= ĠArrange ment . Center ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright View Icons . forEach Indexed Ġ{ Ġindex , Ġtrip let Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcon Button ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠPair ( Position , ĠId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick ( Pair ( position , Ġtrip let . third )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTrip let ( Icon , ĠT int Color , ĠId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcon ( p ainter Ġ= Ġtrip let . first , Ġcontent Description Ġ= Ġtrip let . third , Ġt int Ġ= Ġtrip let . second ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠMain Ġcontent Ġview Ġof Ġthe Ġcell ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBox ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. offset Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInt Offset ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Ab le State . offset . value . round ToInt (), Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }