package Ġcom . car lo spin an . compose gmail . view Ċ Ċ import Ġandroidx . compose . Composable Ċ import Ġandroidx . compose . state Ċ import Ġandroidx . ui . core . Alignment Ċ import Ġandroidx . ui . core . Modifier Ċ import Ġandroidx . ui . core . clip Ċ import Ġandroidx . ui . foundation . Box Ċ import Ġandroidx . ui . foundation . Icon Ċ import Ġandroidx . ui . foundation . Text Ċ import Ġandroidx . ui . foundation . lazy . Lazy Column Items Ċ import Ġandroidx . ui . foundation . selection . toggle able Ċ import Ġandroidx . ui . foundation . shape . corner . Circle Shape Ċ import Ġandroidx . ui . graphics . Color Ċ import Ġandroidx . ui . layout .* Ċ import Ġandroidx . ui . material .* Ċ import Ġandroidx . ui . res . string Resource Ċ import Ġandroidx . ui . res . vector Resource Ċ import Ġandroidx . ui . text . TextStyle Ċ import Ġandroidx . ui . text . style . Text Overflow Ċ import Ġandroidx . ui . tool ing . preview . Preview Ċ import Ġandroidx . ui . unit . dp Ċ import Ġandroidx . ui . unit . sp Ċ import Ġcom . car lo spin an . compose gmail . R Ċ import Ġcom . car lo spin an . compose gmail . entity . Email Ċ Ċ private Ġconst Ġval ĠI CONS _ COLOR Ġ= Ġ 0 xFF F DD 6 6 3 Ċ Ċ /** Ċ Ġ* Ġ@ author ĠCar los ĠPi Ã± an Ċ Ġ* Ġ@ reference Ġhttps :// www . d roid con . com / media - detail ? video = 4 1 2 3 0 4 8 0 9 Ċ Ġ*/ Ċ @ Composable Ċ fun ĠEmail Item ( email : ĠEmail ) Ġ{ ĊĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . padding ( 1 6 . dp ) ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠSender Icon () ĊĠĠĠĠĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . padding ( start Ġ= Ġ 8 . dp , Ġtop Ġ= Ġ 0 . dp , Ġend Ġ= Ġ 0 . dp , Ġbottom Ġ= Ġ 0 . dp ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEmail Header ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender Ġ= Ġemail . sender , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreceipt Time Ġ= Ġemail . receipt Time , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimportant Ġ= Ġemail . important ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvertical Gravity Ġ= ĠAlignment . Bottom ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . weight ( 1 F ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSubject ( subject Ġ= Ġemail . subject ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBody ( body Ġ= Ġemail . body ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStar ( email . star red ) Ġ{ Ġstar red Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemail . star red Ġ= Ġstar red ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Preview Ċ @ Composable Ċ fun ĠEmail Item Preview () Ġ{ ĊĠĠĠ Ġval Ġemail Ġ= ĠEmail ( ĊĠĠĠĠĠĠĠ Ġsender Ġ= Ġ" Compose ĠDocumentation ", ĊĠĠĠĠĠĠĠ Ġimportant Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġreceipt Time Ġ= Ġ" May Ġ 5 th ", ĊĠĠĠĠĠĠĠ Ġsubject Ġ= Ġ" Compose ĠDocumentation ĠUpdated ", ĊĠĠĠĠĠĠĠ Ġbody Ġ= Ġ" Here Ġgoes Ġthe ĠBody ", ĊĠĠĠĠĠĠĠ Ġstar red Ġ= Ġtrue ĊĠĠĠ Ġ) ĊĠĠĠ ĠEmail Item ( email Ġ= Ġemail ) Ċ } Ċ Ċ @ Composable Ċ fun ĠEmail Header ( ĊĠĠĠ Ġsender : ĠString , ĊĠĠĠ Ġreceipt Time : ĠString , ĊĠĠĠ Ġimportant : ĠBoolean Ċ ) Ġ{ ĊĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . fill Max Width (), ĊĠĠĠĠĠĠĠ Ġvertical Gravity Ġ= ĠAlignment . Center Vert ically ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( important ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠImport ant () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠSender ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsender Ġ= Ġsender , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . weight ( 1 F ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠRe ceipt Time ( receipt Time Ġ= Ġreceipt Time ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠSender ( sender : ĠString , Ġmodifier : ĠModifier Ġ= ĠModifier ) Ġ{ ĊĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier , ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġsender , ĊĠĠĠĠĠĠĠ Ġstyle Ġ= ĠTextStyle ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠColor . Black , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfontSize Ġ= Ġ 2 0 . sp ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġoverflow Ġ= ĠText Overflow . El lipsis , ĊĠĠĠĠĠĠĠ Ġmax Lines Ġ= Ġ 1 ĊĠĠĠ Ġ) Ċ } Ċ Ċ @ Composable Ċ fun ĠImport ant () Ġ{ ĊĠĠĠ ĠIcon ( ĊĠĠĠĠĠĠĠ Ġasset Ġ= Ġvector Resource ( id Ġ= ĠR . drawable . ic _ important ), ĊĠĠĠĠĠĠĠ Ġt int Ġ= ĠColor ( ICON S _ COLOR ) ĊĠĠĠĠĠĠĠ Ġ// Material Theme . colors . primary ĊĠĠĠ Ġ) Ċ } Ċ Ċ @ Composable Ċ fun ĠRe ceipt Time ( receipt Time : ĠString ) Ġ{ ĊĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġreceipt Time , ĊĠĠĠĠĠĠĠ Ġstyle Ġ= ĠTextStyle ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠColor . Black , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfontSize Ġ= Ġ 1 4 . sp ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) Ċ } Ċ Ċ @ Composable Ċ fun ĠSubject ( subject : ĠString ) Ġ{ ĊĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġsubject , ĊĠĠĠĠĠĠĠ Ġstyle Ġ= ĠTextStyle ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠColor . Black , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfontSize Ġ= Ġ 1 6 . sp ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġoverflow Ġ= ĠText Overflow . El lipsis , ĊĠĠĠĠĠĠĠ Ġmax Lines Ġ= Ġ 1 ĊĠĠĠ Ġ) Ċ } Ċ Ċ @ Composable Ċ fun ĠBody ( body : ĠString ) Ġ{ ĊĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠ Ġoverflow Ġ= ĠText Overflow . El lipsis , ĊĠĠĠĠĠĠĠ Ġmax Lines Ġ= Ġ 2 , ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġbody , ĊĠĠĠĠĠĠĠ Ġstyle Ġ= ĠTextStyle ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠColor . Black , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfontSize Ġ= Ġ 1 6 . sp ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġsoft Wrap Ġ= Ġtrue ĊĠĠĠ Ġ) Ċ } Ċ Ċ @ Composable Ċ fun ĠStar ( star red : ĠBoolean , Ġon Star Click : Ġ( Boolean ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġval Ġcolor Ġ= Ġif Ġ( star red ) ĊĠĠĠĠĠĠĠ ĠColor ( ICON S _ COLOR ) ĊĠĠĠ Ġelse ĊĠĠĠĠĠĠĠ ĠColor . Dark Gray ĊĊĠĠĠ ĠIcon ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . toggle able ( value Ġ= Ġstar red , Ġon Value Change Ġ= Ġon Star Click ), ĊĠĠĠĠĠĠĠ Ġasset Ġ= Ġvector Resource ( id Ġ= ĠR . drawable . ic _ baseline _ star _ 2 4 ), ĊĠĠĠĠĠĠĠ Ġt int Ġ= Ġcolor ĊĠĠĠ Ġ) Ċ } Ċ Ċ @ Composable Ċ fun ĠSender Icon () Ġ{ ĊĠĠĠ ĠBox ( ĊĠĠĠĠĠĠĠ ĠbackgroundColor Ġ= ĠColor . Dark Gray , ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. clip ( Circle Shape ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. preferred Size ( 3 6 . dp ) ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠIcon ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġasset Ġ= Ġvector Resource ( id Ġ= ĠR . drawable . ic _ person ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt int Ġ= ĠColor . Light Gray , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . fill MaxSize () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠEmail List ( ĊĠĠĠ Ġemail List : ĠList < Email >, ĊĠĠĠ Ġnav Items : ĠList < Email Navigation Item > Ċ ) Ġ{ ĊĠĠĠ Ġval Ġ( ĊĠĠĠĠĠĠĠ Ġstate : ĠScaffold State , ĊĠĠĠĠĠĠĠ Ġon Drawer StateChange : Ġ( Sca ffold State ) Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ= Ġstate Ġ{ ĊĠĠĠĠĠĠĠ ĠScaffold State () ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠScaffold ( ĊĠĠĠĠĠĠĠ Ġscaffold State Ġ= Ġstate , ĊĠĠĠĠĠĠĠ Ġtop Bar Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEmail App bar Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠnewState Ġ= Ġif Ġ( state . drawer State Ġ== ĠDraw er State . Closed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠScaffold State ( drawer State Ġ= ĠDraw er State . Opened ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠScaffold State ( drawer State Ġ= ĠDraw er State . Closed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Drawer StateChange ( newState ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġdrawer Content Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEmail Navigation ( nav Items Ġ= Ġnav Items ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġfloating ActionButton Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNew Email Button Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġfloating ActionButton Position Ġ= ĠScaffold . Fab Position . End ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLazy Column Items ( items Ġ= Ġemail List ) Ġ{ Ġemail Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEmail Item ( email Ġ= Ġemail ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠEmail App bar ( on Navigation Click : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ ĠTop AppBar ( ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġstring Resource ( id Ġ= ĠR . string . app _ name )) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġnavigation Icon Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIcon Button ( onClick Ġ= Ġon Navigation Click ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcon ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġasset Ġ= Ġvector Resource ( id Ġ= ĠR . drawable . ic _ dashboard _ menu ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ } Ċ Ċ @ Composable Ċ fun ĠNew Email Button ( onClick : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ ĠFloating ActionButton ( onClick Ġ= ĠonClick ) Ġ{ ĊĠĠĠĠĠĠĠ ĠIcon ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġasset Ġ= Ġvector Resource ( id Ġ= ĠR . drawable . ic _ baseline _ add _ 2 4 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Preview Ċ @ Composable Ċ fun ĠNew Email Button Preview () Ġ{ ĊĠĠĠ ĠNew Email Button Ġ{ ĊĊĠĠĠ Ġ} Ċ }