Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -55,16 +55,14 @@ class AdvanceListsActivity : ComponentActivity() {
IconButton(onClick = { onBackPressed() }) {
Icon(
Icons.Filled.ArrowBack,
contentDescription = stringResource(id = R.string.cd_back)
contentDescription = stringResource(id = R.string.cd_back),
)
}
}
},
)
}
) { paddingValues ->
AdvanceListContent(
modifier = Modifier.padding(paddingValues),
)
AdvanceListContent(modifier = Modifier.padding(paddingValues))
}
}
}
Expand All @@ -73,22 +71,21 @@ class AdvanceListsActivity : ComponentActivity() {
companion object {
val tabs = listOf("Shimmers", "Animated Lists", "Swipeable Lists")
const val DARK_THEME = "darkTheme"

fun newIntent(context: Context, isDarkTheme: Boolean) =
Intent(context, AdvanceListsActivity::class.java).apply { putExtra(DARK_THEME, isDarkTheme) }
}
}

@Composable
fun AdvanceListContent(
modifier: Modifier = Modifier,
) {
fun AdvanceListContent(modifier: Modifier = Modifier) {
var selectedIndex by remember { mutableStateOf(0) }
val pagerState: PagerState = run { remember { PagerState(0, 0, tabs.size - 1) } }
Column(modifier = modifier) {
ScrollableTabRow(
backgroundColor = MaterialTheme.colorScheme.surface,
selectedTabIndex = selectedIndex,
edgePadding = 12.dp
edgePadding = 12.dp,
) {
tabs.forEachIndexed { index, title ->
Tab(
Expand All @@ -97,7 +94,7 @@ fun AdvanceListContent(
selectedIndex = tabs.indexOf(title)
pagerState.currentPage = tabs.indexOf(title)
},
text = { Text(title) }
text = { Text(title) },
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ class DialogsActivity : AppCompatActivity() {

companion object {
const val DARK_THEME = "darkTheme"

fun newIntent(context: Context, isDarkTheme: Boolean) =
Intent(context, DialogsActivity::class.java).apply { putExtra(DARK_THEME, isDarkTheme) }
}
Expand All @@ -82,13 +83,13 @@ fun DialogScreen(onBack: () -> Unit) {
IconButton(onClick = onBack) {
Icon(
imageVector = Icons.Default.ArrowBack,
contentDescription = stringResource(id = R.string.cd_back)
contentDescription = stringResource(id = R.string.cd_back),
)
}
}
},
)
},
content = { DialogsOptionList() }
content = { DialogsOptionList() },
)
}

Expand All @@ -108,51 +109,51 @@ fun DialogsOptionList() {
Column(modifier = Modifier.verticalScroll(rememberScrollState()).padding(16.dp)) {
Button(
onClick = { dialogState = dialogState.copy(showDialog = true) },
modifier = Modifier.fillMaxWidth().padding(16.dp)
modifier = Modifier.fillMaxWidth().padding(16.dp),
) {
Text(text = "Plain Message Dialog")
}
Button(
onClick = { dialogState = DialogState(true, DialogType.TITLE) },
modifier = Modifier.fillMaxWidth().padding(16.dp)
modifier = Modifier.fillMaxWidth().padding(16.dp),
) {
Text(text = "Title Dialog")
}
Button(
onClick = { dialogState = DialogState(true, DialogType.VERTICALBUTTON) },
modifier = Modifier.fillMaxWidth().padding(16.dp)
modifier = Modifier.fillMaxWidth().padding(16.dp),
) {
Text(text = "Dialog with Vertical buttons")
}
Button(
onClick = { dialogState = DialogState(true, DialogType.IMAGE) },
modifier = Modifier.fillMaxWidth().padding(16.dp)
modifier = Modifier.fillMaxWidth().padding(16.dp),
) {
Text(text = "Dialog with Image")
}
Button(
onClick = { dialogState = DialogState(true, DialogType.LONGDIALOG) },
modifier = Modifier.fillMaxWidth().padding(16.dp)
modifier = Modifier.fillMaxWidth().padding(16.dp),
) {
Text(text = "Long Dialog")
}
Button(
onClick = { dialogState = DialogState(true, DialogType.ROUNDED) },
modifier = Modifier.fillMaxWidth().padding(16.dp)
modifier = Modifier.fillMaxWidth().padding(16.dp),
) {
Text(text = "Extra Rounded Dialog")
}

Button(
onClick = { dialogState = DialogState(true, DialogType.DATEPICKER) },
modifier = Modifier.fillMaxWidth().padding(16.dp)
modifier = Modifier.fillMaxWidth().padding(16.dp),
) {
Text(text = "Date Picker Dialog")
}

Button(
onClick = { dialogState = DialogState(true, DialogType.TIMEPICKER) },
modifier = Modifier.fillMaxWidth().padding(16.dp)
modifier = Modifier.fillMaxWidth().padding(16.dp),
) {
Text(text = "Time Picker Dialog")
}
Expand All @@ -170,7 +171,7 @@ fun ShowDialog(type: DialogType, onDismiss: () -> Unit) {
confirmButton = {
TextButton(onClick = onDismiss, modifier = Modifier.padding(8.dp)) { Text(text = "Ok") }
},
onDismissRequest = onDismiss
onDismissRequest = onDismiss,
)
DialogType.TITLE ->
AlertDialog(
Expand All @@ -184,7 +185,7 @@ fun ShowDialog(type: DialogType, onDismiss: () -> Unit) {
TextButton(onClick = onDismiss, modifier = Modifier.padding(4.dp)) { Text(text = "Ok") }
}
},
onDismissRequest = onDismiss
onDismissRequest = onDismiss,
)
DialogType.VERTICALBUTTON ->
AlertDialog(
Expand All @@ -198,7 +199,7 @@ fun ShowDialog(type: DialogType, onDismiss: () -> Unit) {
Text(text = "Ok")
}
},
onDismissRequest = onDismiss
onDismissRequest = onDismiss,
)
DialogType.IMAGE ->
AlertDialog(
Expand All @@ -210,7 +211,7 @@ fun ShowDialog(type: DialogType, onDismiss: () -> Unit) {
confirmButton = {
TextButton(onClick = onDismiss, modifier = Modifier.padding(8.dp)) { Text(text = "Ok") }
},
onDismissRequest = onDismiss
onDismissRequest = onDismiss,
)
DialogType.LONGDIALOG ->
AlertDialog(
Expand All @@ -220,11 +221,11 @@ fun ShowDialog(type: DialogType, onDismiss: () -> Unit) {
Text(item.subtitle, modifier = Modifier.padding(bottom = 8.dp))
Image(
painter = painterResource(DemoDataProvider.item.imageId),
contentDescription = null
contentDescription = null,
)
Text(
item.subtitle + item.title + item.subtitle + item.title,
style = typography.subtitle2
style = typography.subtitle2,
)
}
},
Expand All @@ -242,15 +243,15 @@ fun ShowDialog(type: DialogType, onDismiss: () -> Unit) {
Image(
painter = painterResource(DemoDataProvider.item.imageId),
contentDescription = null,
modifier = Modifier.clip(RoundedCornerShape(16.dp))
modifier = Modifier.clip(RoundedCornerShape(16.dp)),
)
}
},
confirmButton = {
TextButton(onClick = onDismiss, modifier = Modifier.padding(8.dp)) { Text(text = "Ok") }
},
onDismissRequest = onDismiss,
shape = RoundedCornerShape(16.dp)
shape = RoundedCornerShape(16.dp),
)
DialogType.DATEPICKER -> {
val context = LocalContext.current
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ class DynamicUIActivity : ComponentActivity() {
companion object {
const val TYPE = "type"
const val DARK_THEME = "darkTheme"

fun newIntent(context: Context, dynamicUiType: String, isDarkTheme: Boolean) =
Intent(context, DynamicUIActivity::class.java).apply {
putExtra(TYPE, dynamicUiType)
Expand All @@ -69,23 +70,17 @@ fun DynamicUiWrapper(uiType: String, onback: () -> Unit) {
IconButton(onClick = onback) {
Icon(Icons.Filled.ArrowBack, contentDescription = stringResource(id = R.string.cd_back))
}
}
},
)
},
content = { paddingValues ->
DynamicUiScreen(
uiType = uiType,
modifier = Modifier.padding(paddingValues),
)
}
DynamicUiScreen(uiType = uiType, modifier = Modifier.padding(paddingValues))
},
)
}

@Composable
fun DynamicUiScreen(
uiType: String,
modifier: Modifier = Modifier,
) {
fun DynamicUiScreen(uiType: String, modifier: Modifier = Modifier) {
// We setup a base activity and we will change content depending upon ui type so
// we don't have to create Activity for every feature showcase
Box(modifier = modifier) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ class ListViewActivity : ComponentActivity() {
companion object {
const val TYPE = "type"
const val DARK_THEME = "darkTheme"

fun newIntent(context: Context, listViewType: String, isDarkTheme: Boolean) =
Intent(context, ListViewActivity::class.java).apply {
putExtra(TYPE, listViewType)
Expand All @@ -78,34 +79,25 @@ fun ListViewContent(listType: String, onBack: () -> Unit) {
Text(text = "ListView")
Text(
text = listType.lowercase(Locale.getDefault()),
style = MaterialTheme.typography.labelSmall
style = MaterialTheme.typography.labelSmall,
)
}
},
navigationIcon = {
IconButton(onClick = onBack) {
Icon(
Icons.Filled.ArrowBack,
contentDescription = stringResource(id = R.string.cd_back),
)
Icon(Icons.Filled.ArrowBack, contentDescription = stringResource(id = R.string.cd_back))
}
},
)
},
content = { paddingValues ->
ListViewScreen(
listType = listType,
modifier = Modifier.padding(paddingValues),
)
}
ListViewScreen(listType = listType, modifier = Modifier.padding(paddingValues))
},
)
}

@Composable
fun ListViewScreen(
listType: String,
modifier: Modifier = Modifier,
) {
fun ListViewScreen(listType: String, modifier: Modifier = Modifier) {
Box(modifier = modifier) {
when (listType) {
ListViewType.VERTICAL.name -> {
Expand Down Expand Up @@ -137,7 +129,7 @@ fun VerticalListView() {
VerticalListItem(item = item)
}
ListItemDivider()
}
},
)
}
}
Expand All @@ -150,19 +142,19 @@ fun HorizontalListView() {
Text(
modifier = Modifier.padding(16.dp),
text = "Good Food",
style = MaterialTheme.typography.labelMedium
style = MaterialTheme.typography.labelMedium,
)
LazyRow(modifier = Modifier.padding(end = 16.dp)) {
items(
items = list,
itemContent = { HorizontalListItem(it, Modifier.padding(start = 16.dp, bottom = 16.dp)) }
itemContent = { HorizontalListItem(it, Modifier.padding(start = 16.dp, bottom = 16.dp)) },
)
}
ListItemDivider()
Text(
modifier = Modifier.padding(16.dp),
text = "Stories",
style = MaterialTheme.typography.labelMedium
style = MaterialTheme.typography.labelMedium,
)
StoryList(profiles = profiles, onProfileClicked = {})
}
Expand All @@ -183,7 +175,7 @@ fun GridListView() {
profileName = it.author,
isMe = it.id == 1,
modifier = Modifier.padding(start = 8.dp, end = 8.dp, top = 8.dp),
onClick = {}
onClick = {},
)
}
}
Expand All @@ -194,17 +186,12 @@ fun GridListView() {
private fun ListItemDivider() {
Divider(
modifier = Modifier.padding(horizontal = 12.dp, vertical = 12.dp),
color = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.08f)
color = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.08f),
)
}

@Preview(showBackground = true)
@Composable
fun DefaultPreview2() {
ComposeCookBookTheme {
ListViewContent(
ListViewType.VERTICAL.name,
onBack = {},
)
}
ComposeCookBookTheme { ListViewContent(ListViewType.VERTICAL.name, onBack = {}) }
}
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ buildscript {
}

plugins {
id("com.ncorti.ktfmt.gradle") version "0.12.0" apply false
id("com.ncorti.ktfmt.gradle") version "0.16.0" apply false
}

allprojects {
Expand Down
Loading