@@ -20,26 +20,34 @@ import androidx.compose.foundation.Image
2020import androidx.compose.foundation.background
2121import androidx.compose.foundation.layout.Arrangement
2222import androidx.compose.foundation.layout.Box
23+ import androidx.compose.foundation.layout.Column
2324import androidx.compose.foundation.layout.PaddingValues
2425import androidx.compose.foundation.layout.Row
2526import androidx.compose.foundation.layout.Spacer
2627import androidx.compose.foundation.layout.fillMaxSize
2728import androidx.compose.foundation.layout.fillMaxWidth
29+ import androidx.compose.foundation.layout.height
2830import androidx.compose.foundation.layout.padding
2931import androidx.compose.foundation.layout.size
3032import androidx.compose.foundation.layout.width
3133import androidx.compose.foundation.lazy.LazyColumn
34+ import androidx.compose.foundation.lazy.LazyRow
3235import androidx.compose.foundation.lazy.items
3336import androidx.compose.material.icons.Icons
3437import androidx.compose.material.icons.automirrored.filled.ArrowBack
38+ import androidx.compose.material.icons.filled.Add
39+ import androidx.compose.material.icons.filled.Clear
40+ import androidx.compose.material.icons.filled.Close
3541import androidx.compose.material.icons.filled.Share
3642import androidx.compose.material3.BottomAppBar
3743import androidx.compose.material3.Button
3844import androidx.compose.material3.ExperimentalMaterial3Api
45+ import androidx.compose.material3.FloatingActionButton
3946import androidx.compose.material3.Icon
4047import androidx.compose.material3.IconButton
4148import androidx.compose.material3.MaterialTheme
4249import androidx.compose.material3.Scaffold
50+ import androidx.compose.material3.SmallFloatingActionButton
4351import androidx.compose.material3.Text
4452import androidx.compose.material3.TopAppBar
4553import androidx.compose.material3.TopAppBarDefaults
@@ -78,22 +86,26 @@ fun DocumentScreen(
7886 )
7987 },
8088 bottomBar = {
81- BottomAppBar (
82- containerColor = Color .Transparent
83- ) {
84- Row (
85- modifier = Modifier .fillMaxWidth(),
86- horizontalArrangement = Arrangement .SpaceEvenly
87- ) {
88- Button (onClick = onSharePressed) {
89- Icon (Icons .Default .Share , contentDescription = " Share" )
90- Spacer (Modifier .width(8 .dp))
91- Text (" Share" )
89+ Column {
90+ PageList (pageIds, imageLoader)
91+ BottomAppBar (
92+ actions = {
93+ Button (onClick = onSharePressed) {
94+ Icon (Icons .Default .Share , contentDescription = " Share" )
95+ Spacer (Modifier .width(8 .dp))
96+ Text (" Share" )
97+ }
98+ Spacer (modifier = Modifier .size(8 .dp))
99+ Button (onClick = onSavePressed) {
100+ Text (" Save" )
101+ }
102+ },
103+ floatingActionButton = {
104+ FloatingActionButton (onClick = onBackPressed) {
105+ Icon (Icons .Default .Close , contentDescription = " Close" )
106+ }
92107 }
93- Button (onClick = onSavePressed) {
94- Text (" Save" )
95- }
96- }
108+ )
97109 }
98110 }
99111 ) { padding -> DocumentPreview (pageIds, padding, imageLoader, onDeleteImage) }
@@ -106,37 +118,69 @@ private fun DocumentPreview(
106118 imageLoader : (String ) -> Bitmap ,
107119 onDeleteImage : (String ) -> Unit ,
108120) {
109- Box (
121+ Column (
110122 modifier = Modifier
111123 .fillMaxSize()
112124 .background(MaterialTheme .colorScheme.surfaceContainer)
113- .padding(PaddingValues (top = padding.calculateTopPadding()) )
125+ .padding(padding)
114126 ) {
115- Text (
116- " ${pageIds.size} pages" ,
117- modifier = Modifier .padding(start = 16 .dp, top = 16 .dp).align(Alignment .TopStart ),
118- style = MaterialTheme .typography.titleMedium
119- )
120- LazyColumn (
121- contentPadding = PaddingValues (20 .dp),
127+
128+ Box (
129+ modifier = Modifier .fillMaxSize()
130+ ) {
131+ // TODO Make it possible to zoom on the image
132+ Image (
133+ bitmap = imageLoader(pageIds[0 ]).asImageBitmap(),
134+ contentDescription = null ,
135+ modifier = Modifier
136+ .padding(4 .dp)
137+ .align(Alignment .Center )
138+ )
139+ Text (" 1 / ${pageIds.size} " ,
140+ color = MaterialTheme .colorScheme.inverseOnSurface,
141+ modifier = Modifier .align(Alignment .BottomEnd )
142+ .padding(all = 8 .dp)
143+ .background(MaterialTheme .colorScheme.inverseSurface.copy(alpha = 0.5f ))
144+ .padding(all = 4 .dp)
145+ )
146+ }
147+ }
148+ }
149+
150+ @Composable
151+ private fun PageList (
152+ pageIds : List <String >,
153+ imageLoader : (String ) -> Bitmap
154+ ) {
155+ Box {
156+ LazyRow (
157+ contentPadding = PaddingValues (8 .dp),
122158 modifier = Modifier
123- .padding(horizontal = 16 .dp)
124- .align(Alignment .Center ),
125- verticalArrangement = Arrangement .spacedBy(12 .dp)
159+ .fillMaxWidth()
160+ .padding(vertical = 4 .dp)
161+ .background(MaterialTheme .colorScheme.secondaryContainer),
162+ horizontalArrangement = Arrangement .spacedBy(8 .dp)
126163 ) {
127164 items(pageIds) { id ->
128- // TODO Display small images rather than big ones
129- // TODO Make it possible to zoom on an image
165+ // TODO Use small images rather than big ones
130166 val bitmap = imageLoader(id).asImageBitmap()
131167 Image (
132168 bitmap = bitmap,
133169 contentDescription = null ,
134170 modifier = Modifier
135- .size( 200 .dp)
171+ .height( 120 .dp)
136172 .padding(4 .dp)
137173 )
138174 }
139175 }
176+ SmallFloatingActionButton (
177+ onClick = {},
178+ modifier = Modifier
179+ .align(Alignment .CenterEnd )
180+ .padding(8 .dp)
181+ ) {
182+ Icon (imageVector = Icons .Default .Add , contentDescription = " Add page" )
183+ }
140184 }
141185}
142186
0 commit comments