From 37161e3944a7093796b7f7375b125269cc3607e7 Mon Sep 17 00:00:00 2001 From: RocqJones Date: Tue, 5 Mar 2024 16:26:18 +0300 Subject: [PATCH 01/10] AGP upgrade and libs refactor --- app/build.gradle | 18 +++++++++--------- build.gradle | 26 +++++++++++++++++++------- me-design/build.gradle | 28 ++++++++++++---------------- me-logic/build.gradle | 11 +++++------ 4 files changed, 45 insertions(+), 38 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 3135021..6205372 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -51,17 +51,17 @@ dependencies { implementation project(":me-design") implementation project(":me-logic") - // other dependencies - implementation 'androidx.core:core-ktx:1.12.0' - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.2' - implementation 'androidx.activity:activity-compose:1.8.0' + implementation "androidx.core:core-ktx:$core_version" + implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_runtime" + implementation "androidx.activity:activity-compose:$activity_compose" implementation "androidx.compose.ui:ui:$compose_version" implementation "androidx.compose.ui:ui-tooling-preview:$compose_version" - implementation 'androidx.compose.material3:material3:1.1.2' - testImplementation 'junit:junit:4.13.2' - androidTestImplementation 'androidx.test.ext:junit:1.1.5' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' + implementation "androidx.compose.material3:material3:$material3_version" + + testImplementation "junit:junit:$junit_version" + androidTestImplementation "androidx.test.ext:junit:$test_junit" + androidTestImplementation "androidx.test.espresso:espresso-core:$junit_version" androidTestImplementation "androidx.compose.ui:ui-test-junit4:$compose_version" debugImplementation "androidx.compose.ui:ui-tooling:$compose_version" - debugImplementation "androidx.compose.ui:ui-test-manifest:$compose_version" + debugImplementation "androidx.compose.ui:ui-test-manifest:$test_manifest" } \ No newline at end of file diff --git a/build.gradle b/build.gradle index 000840b..124a80c 100644 --- a/build.gradle +++ b/build.gradle @@ -1,11 +1,23 @@ buildscript { - ext { - compose_version = '1.5.4' // compose.runtime - compose_compiler = '1.4.4' // Release: https://developer.android.com/jetpack/androidx/releases/compose-kotlin - } -}// Top-level build file where you can add configuration options common to all sub-projects/modules. + ext.compose_version = '1.5.4' // compose.runtime + ext.compose_compiler = '1.4.4' // Release: https://developer.android.com/jetpack/androidx/releases/compose-kotlin +} +// Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { - id 'com.android.application' version '8.1.2' apply false - id 'com.android.library' version '8.1.2' apply false + id 'com.android.application' version '8.1.4' apply false + id 'com.android.library' version '8.1.4' apply false id 'org.jetbrains.kotlin.android' version '1.8.10' apply false +} + +ext { + core_version = '1.12.0' + activity_compose = '1.8.2' + lifecycle_runtime = '2.7.0' + material_version = '1.11.0' + material3_version = '1.2.0' + appcompat_version = '1.6.1' + test_manifest = '1.6.2' + test_espresso = '3.5.1' + test_junit = '1.1.5' + junit_version = '4.13.2' } \ No newline at end of file diff --git a/me-design/build.gradle b/me-design/build.gradle index af928c1..bd885b9 100644 --- a/me-design/build.gradle +++ b/me-design/build.gradle @@ -55,25 +55,21 @@ dependencies { // Me Android SDK - logic implementation project(":me-logic") - implementation 'androidx.core:core-ktx:1.12.0' + implementation "androidx.core:core-ktx:$core_version" + implementation "androidx.appcompat:appcompat:$appcompat_version" - // other dependencies - implementation 'androidx.core:core-ktx:1.12.0' - implementation 'androidx.appcompat:appcompat:1.6.1' - implementation 'com.google.android.material:material:1.10.0' - - testImplementation 'junit:junit:4.13.2' - androidTestImplementation 'androidx.test.ext:junit:1.1.5' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' - - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.2' - implementation 'androidx.activity:activity-compose:1.8.0' - implementation "androidx.compose.ui:ui:$compose_version" - implementation "androidx.compose.ui:ui-tooling-preview:$compose_version" - implementation 'androidx.compose.material3:material3:1.1.2' + testImplementation "junit:junit:$junit_version" + androidTestImplementation "androidx.test.ext:junit:$test_junit" + androidTestImplementation "androidx.test.espresso:espresso-core:$junit_version" androidTestImplementation "androidx.compose.ui:ui-test-junit4:$compose_version" debugImplementation "androidx.compose.ui:ui-tooling:$compose_version" - debugImplementation "androidx.compose.ui:ui-test-manifest:$compose_version" + debugImplementation "androidx.compose.ui:ui-test-manifest:$test_manifest" + implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_runtime" + implementation "androidx.activity:activity-compose:$activity_compose" + implementation "androidx.compose.ui:ui:$compose_version" + implementation "androidx.compose.ui:ui-tooling-preview:$compose_version" + implementation "com.google.android.material:material:$material_version" + implementation "androidx.compose.material3:material3:$material3_version" } \ No newline at end of file diff --git a/me-logic/build.gradle b/me-logic/build.gradle index b69d71e..f574025 100644 --- a/me-logic/build.gradle +++ b/me-logic/build.gradle @@ -36,12 +36,11 @@ android { dependencies { - implementation 'androidx.core:core-ktx:1.12.0' - implementation 'androidx.appcompat:appcompat:1.6.1' - implementation 'androidx.core:core-ktx:1.12.0' + implementation "androidx.core:core-ktx:$core_version" + implementation "androidx.appcompat:appcompat:$appcompat_version" + implementation "com.google.android.material:material:$material_version" - implementation 'com.google.android.material:material:1.10.0' - testImplementation 'junit:junit:4.13.2' + testImplementation "junit:junit:$junit_version" androidTestImplementation 'androidx.test.ext:junit:1.1.5' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' + androidTestImplementation "androidx.test.espresso:espresso-core:$test_espresso" } \ No newline at end of file From 2b69a46ef785ec6fa7855dc8fe262ec3e8ae45aa Mon Sep 17 00:00:00 2001 From: RocqJones Date: Tue, 5 Mar 2024 16:28:01 +0300 Subject: [PATCH 02/10] rm --- .idea/gradle.xml | 22 ---------------------- 1 file changed, 22 deletions(-) delete mode 100644 .idea/gradle.xml diff --git a/.idea/gradle.xml b/.idea/gradle.xml deleted file mode 100644 index 4c959e1..0000000 --- a/.idea/gradle.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - \ No newline at end of file From 5482f0e42781bd7c35e77a87365557b1ae72c082 Mon Sep 17 00:00:00 2001 From: RocqJones Date: Tue, 5 Mar 2024 16:30:15 +0300 Subject: [PATCH 03/10] test_junit --- me-logic/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/me-logic/build.gradle b/me-logic/build.gradle index f574025..f342c6b 100644 --- a/me-logic/build.gradle +++ b/me-logic/build.gradle @@ -41,6 +41,6 @@ dependencies { implementation "com.google.android.material:material:$material_version" testImplementation "junit:junit:$junit_version" - androidTestImplementation 'androidx.test.ext:junit:1.1.5' + androidTestImplementation "androidx.test.ext:junit:$test_junit" androidTestImplementation "androidx.test.espresso:espresso-core:$test_espresso" } \ No newline at end of file From d2d93dcd409d72319ff4fe791149086d68312a95 Mon Sep 17 00:00:00 2001 From: RocqJones Date: Tue, 5 Mar 2024 16:30:43 +0300 Subject: [PATCH 04/10] ignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index aa724b7..cf7e2e9 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ .externalNativeBuild .cxx local.properties +/.idea/gradle.xml From 715d3628146a1685cb02a86b45d7d12accdda0d3 Mon Sep 17 00:00:00 2001 From: RocqJones Date: Tue, 5 Mar 2024 17:12:33 +0300 Subject: [PATCH 05/10] implement compose navigator & single activity principle --- app/build.gradle | 2 + .../java/com/rocqjones/mesdk/MainActivity.kt | 98 +++++-------------- .../com/rocqjones/mesdk/screens/HomeScreen.kt | 67 +++++++++++++ build.gradle | 3 +- me-design/build.gradle | 3 + me-design/src/main/AndroidManifest.xml | 10 -- .../screens/BottomSheetDialogScreen.kt | 10 ++ .../{ListActivity.kt => EndlessScreen.kt} | 51 ++-------- .../bottomNavAdaptive/AdaptiveNavActivity.kt | 57 ----------- .../com/rocqjones/me_logic/models/Screen.kt | 11 +++ 10 files changed, 128 insertions(+), 184 deletions(-) create mode 100644 app/src/main/java/com/rocqjones/mesdk/screens/HomeScreen.kt create mode 100644 me-design/src/main/java/com/rocqjones/me_design/screens/BottomSheetDialogScreen.kt rename me-design/src/main/java/com/rocqjones/me_design/screens/{ListActivity.kt => EndlessScreen.kt} (76%) delete mode 100644 me-design/src/main/java/com/rocqjones/me_design/screens/bottomNavAdaptive/AdaptiveNavActivity.kt create mode 100644 me-logic/src/main/java/com/rocqjones/me_logic/models/Screen.kt diff --git a/app/build.gradle b/app/build.gradle index 6205372..da89103 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -57,6 +57,8 @@ dependencies { implementation "androidx.compose.ui:ui:$compose_version" implementation "androidx.compose.ui:ui-tooling-preview:$compose_version" implementation "androidx.compose.material3:material3:$material3_version" + // Compose navigation + implementation("androidx.navigation:navigation-compose:$navigation_version") testImplementation "junit:junit:$junit_version" androidTestImplementation "androidx.test.ext:junit:$test_junit" diff --git a/app/src/main/java/com/rocqjones/mesdk/MainActivity.kt b/app/src/main/java/com/rocqjones/mesdk/MainActivity.kt index 2de46b7..2b1bd92 100644 --- a/app/src/main/java/com/rocqjones/mesdk/MainActivity.kt +++ b/app/src/main/java/com/rocqjones/mesdk/MainActivity.kt @@ -1,23 +1,23 @@ package com.rocqjones.mesdk -import android.content.Intent import android.content.res.Configuration import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent -import androidx.compose.foundation.layout.* -import androidx.compose.material3.Button +import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface -import androidx.compose.material3.Text import androidx.compose.runtime.Composable -import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.unit.dp -import com.rocqjones.me_design.screens.ListActivity -import com.rocqjones.me_design.screens.bottomNavAdaptive.AdaptiveNavActivity +import androidx.navigation.compose.NavHost +import androidx.navigation.compose.composable +import androidx.navigation.compose.rememberNavController +import com.rocqjones.me_design.screens.BottomSheetDialogScreen +import com.rocqjones.me_design.screens.EndlessScreen import com.rocqjones.me_design.ui.theme.MeSDKTheme +import com.rocqjones.me_logic.models.Screen +import com.rocqjones.mesdk.screens.HomeScreen /** * This is the first launcher screen of the SDK. @@ -28,83 +28,34 @@ class MainActivity : ComponentActivity() { super.onCreate(savedInstanceState) setContent { MeSDKTheme { - // A surface container using the 'background' color from the theme Surface( modifier = Modifier.fillMaxSize(), color = MaterialTheme.colorScheme.background ) { - FirstScreen( - onMoveToListClicked = { navigateToList() }, - onMoveToNavClicked = { navigateToAdaptiveUI() } - ) + MyAppMain() } } } } - - private fun navigateToAdaptiveUI() { - try { - val b = Intent(this, AdaptiveNavActivity::class.java) - b.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) - startActivity(b) - } catch (e: Exception) { - e.printStackTrace() - } - } - - private fun navigateToList() { - try { - val a = Intent(this, ListActivity::class.java) - a.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) - startActivity(a) - } catch (e: Exception) { - e.printStackTrace() - } - } } @Composable -fun FirstScreen( - onMoveToListClicked: () -> Unit, - onMoveToNavClicked: () -> Unit, - modifier: Modifier = Modifier -) { - /** - * When the button is clicked, should navigate to the respective UI - */ - Column( - modifier = modifier.fillMaxSize(), - verticalArrangement = Arrangement.Center, - horizontalAlignment = Alignment.CenterHorizontally +fun MyAppMain() { + val navController = rememberNavController() + + NavHost( + navController, startDestination = Screen.HomeScreen.route ) { - val padding = 8.dp - Text( - "Welcome to the Me SDK!", - style = MaterialTheme.typography.headlineMedium, - color =MaterialTheme.colorScheme.secondary, - ) - // list - Button( - modifier = Modifier.padding(padding).fillMaxWidth(), - shape = MaterialTheme.shapes.medium, - onClick = onMoveToListClicked // sets the sate to true - ) { - Text( - "Endless List", - style = MaterialTheme.typography.bodyLarge - ) + composable(Screen.HomeScreen.route) { + HomeScreen(navController) + } + + composable(Screen.EndlessScreen.route) { + EndlessScreen(navController) } - // Adaptive Navigation - Button( - modifier = Modifier.padding(padding).fillMaxWidth(), - shape = MaterialTheme.shapes.medium, - onClick = onMoveToNavClicked // sets the sate to true - ) { - Text( - "Adaptive Navigation", - style = MaterialTheme.typography.bodyLarge - ) + composable(Screen.BottomSheetDialogScreen.route) { + BottomSheetDialogScreen(navController) } } } @@ -123,9 +74,6 @@ fun FirstScreen( @Composable fun DefaultPreview() { MeSDKTheme { - FirstScreen( - onMoveToListClicked = {}, - onMoveToNavClicked = {} - ) // empty lambda expression means "Do nothing" on click + MyAppMain() } } \ No newline at end of file diff --git a/app/src/main/java/com/rocqjones/mesdk/screens/HomeScreen.kt b/app/src/main/java/com/rocqjones/mesdk/screens/HomeScreen.kt new file mode 100644 index 0000000..3fa3389 --- /dev/null +++ b/app/src/main/java/com/rocqjones/mesdk/screens/HomeScreen.kt @@ -0,0 +1,67 @@ +package com.rocqjones.mesdk.screens + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Button +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import androidx.navigation.NavHostController +import com.rocqjones.me_logic.models.Screen + +@Composable +fun HomeScreen(navController: NavHostController) { + + Box { + /** + * When the button is clicked, should navigate to the respective UI + */ + Column( + modifier = Modifier.fillMaxSize(), + verticalArrangement = Arrangement.Center, + horizontalAlignment = Alignment.CenterHorizontally + ) { + val padding = 8.dp + Text( + "Welcome to the Me SDK!", + style = MaterialTheme.typography.headlineMedium, + color = MaterialTheme.colorScheme.secondary, + ) + + // list + Button( + modifier = Modifier + .padding(padding) + .fillMaxWidth(), + shape = MaterialTheme.shapes.medium, + onClick = { navController.navigate(Screen.EndlessScreen.route) } + ) { + Text( + "Vertical Endless List", + style = MaterialTheme.typography.bodyLarge + ) + } + + // Bottom Sheets + Button( + modifier = Modifier + .padding(padding) + .fillMaxWidth(), + shape = MaterialTheme.shapes.medium, + onClick = { navController.navigate(Screen.BottomSheetDialogScreen.route) } + ) { + Text( + "Bottom Sheets Dialog", + style = MaterialTheme.typography.bodyLarge + ) + } + } + } +} \ No newline at end of file diff --git a/build.gradle b/build.gradle index 124a80c..a801899 100644 --- a/build.gradle +++ b/build.gradle @@ -2,7 +2,7 @@ buildscript { ext.compose_version = '1.5.4' // compose.runtime ext.compose_compiler = '1.4.4' // Release: https://developer.android.com/jetpack/androidx/releases/compose-kotlin } -// Top-level build file where you can add configuration options common to all sub-projects/modules. + plugins { id 'com.android.application' version '8.1.4' apply false id 'com.android.library' version '8.1.4' apply false @@ -20,4 +20,5 @@ ext { test_espresso = '3.5.1' test_junit = '1.1.5' junit_version = '4.13.2' + navigation_version = '2.7.7' } \ No newline at end of file diff --git a/me-design/build.gradle b/me-design/build.gradle index bd885b9..16bdf78 100644 --- a/me-design/build.gradle +++ b/me-design/build.gradle @@ -72,4 +72,7 @@ dependencies { implementation "com.google.android.material:material:$material_version" implementation "androidx.compose.material3:material3:$material3_version" + + // Compose navigation + implementation("androidx.navigation:navigation-compose:$navigation_version") } \ No newline at end of file diff --git a/me-design/src/main/AndroidManifest.xml b/me-design/src/main/AndroidManifest.xml index 149f57d..7903fae 100644 --- a/me-design/src/main/AndroidManifest.xml +++ b/me-design/src/main/AndroidManifest.xml @@ -2,16 +2,6 @@ - - Date: Tue, 5 Mar 2024 17:20:22 +0300 Subject: [PATCH 06/10] test_espresso --- app/build.gradle | 2 +- me-design/build.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index da89103..40463d8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -62,7 +62,7 @@ dependencies { testImplementation "junit:junit:$junit_version" androidTestImplementation "androidx.test.ext:junit:$test_junit" - androidTestImplementation "androidx.test.espresso:espresso-core:$junit_version" + androidTestImplementation "androidx.test.espresso:espresso-core:$test_espresso" androidTestImplementation "androidx.compose.ui:ui-test-junit4:$compose_version" debugImplementation "androidx.compose.ui:ui-tooling:$compose_version" debugImplementation "androidx.compose.ui:ui-test-manifest:$test_manifest" diff --git a/me-design/build.gradle b/me-design/build.gradle index 16bdf78..ce2c444 100644 --- a/me-design/build.gradle +++ b/me-design/build.gradle @@ -60,7 +60,7 @@ dependencies { testImplementation "junit:junit:$junit_version" androidTestImplementation "androidx.test.ext:junit:$test_junit" - androidTestImplementation "androidx.test.espresso:espresso-core:$junit_version" + androidTestImplementation "androidx.test.espresso:espresso-core:$test_espresso" androidTestImplementation "androidx.compose.ui:ui-test-junit4:$compose_version" debugImplementation "androidx.compose.ui:ui-tooling:$compose_version" debugImplementation "androidx.compose.ui:ui-test-manifest:$test_manifest" From c253fc61cadcab6935e6f1ecfc4e4cf647425235 Mon Sep 17 00:00:00 2001 From: RocqJones Date: Tue, 5 Mar 2024 17:53:43 +0300 Subject: [PATCH 07/10] Done bottom sheet --- .../screens/BottomSheetDialogScreen.kt | 134 +++++++++++++++++- me-design/src/main/res/values/strings.xml | 1 + 2 files changed, 134 insertions(+), 1 deletion(-) diff --git a/me-design/src/main/java/com/rocqjones/me_design/screens/BottomSheetDialogScreen.kt b/me-design/src/main/java/com/rocqjones/me_design/screens/BottomSheetDialogScreen.kt index 90722d6..94feaa2 100644 --- a/me-design/src/main/java/com/rocqjones/me_design/screens/BottomSheetDialogScreen.kt +++ b/me-design/src/main/java/com/rocqjones/me_design/screens/BottomSheetDialogScreen.kt @@ -1,10 +1,142 @@ package com.rocqjones.me_design.screens +import android.widget.Space +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Add +import androidx.compose.material3.Button +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.ExtendedFloatingActionButton +import androidx.compose.material3.Icon +import androidx.compose.material3.ModalBottomSheet +import androidx.compose.material3.RadioButton +import androidx.compose.material3.Scaffold import androidx.compose.material3.Text +import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.unit.dp import androidx.navigation.NavHostController +import com.rocqjones.me_design.R +import kotlinx.coroutines.launch +@OptIn(ExperimentalMaterial3Api::class) @Composable fun BottomSheetDialogScreen(navController: NavHostController) { - Text(text = "BottomSheetDialogScreen") + + val sheetState = rememberModalBottomSheetState() + val scope = rememberCoroutineScope() + var showBottomSheet by remember { mutableStateOf(false) } + + Scaffold( + floatingActionButton = { + ExtendedFloatingActionButton( + text = { Text("Show bottom sheet") }, + icon = { Icon(Icons.Filled.Add, contentDescription = stringResource(R.string.icon)) }, + onClick = { + showBottomSheet = true + } + ) + } + ) { it + // Screen content + if (showBottomSheet) { + ModalBottomSheet( + onDismissRequest = { + showBottomSheet = false + }, + sheetState = sheetState + ) { + var selectedRowOption by remember { mutableStateOf(0) } // Track selected option (default 0) + var selectedColumnOption by remember { mutableStateOf(0) } // Track selected option (default 0) + + // Sheet content + Column(modifier = Modifier.padding(16.dp)) { + Text("Select row option:") + + Row( + modifier = Modifier.fillMaxWidth(), + verticalAlignment = Alignment.CenterVertically + ) { + RadioButton( + selected = selectedRowOption == 0, + onClick = { selectedRowOption = 0 } + ) + Text("Option 1") + Spacer(modifier = Modifier.width(16.dp)) // Add spacing between options + + RadioButton( + selected = selectedRowOption == 1, + onClick = { selectedRowOption = 1 } + ) + Text("Option 2") + Spacer(modifier = Modifier.width(16.dp)) // Add spacing between options + + RadioButton( + selected = selectedRowOption == 2, + onClick = { selectedRowOption = 2 } + ) + Text("Option 3") + } + + Text("Select column option:") + Column { + Row(verticalAlignment = Alignment.CenterVertically) { + RadioButton( + selected = selectedColumnOption == 0, + onClick = { selectedColumnOption = 0 } + ) + Text("Option 1") + } + + Row(verticalAlignment = Alignment.CenterVertically) { + RadioButton( + selected = selectedColumnOption == 1, + onClick = { selectedColumnOption = 1 } + ) + Text("Option 2") + } + + Row(verticalAlignment = Alignment.CenterVertically) { + RadioButton( + selected = selectedColumnOption == 2, + onClick = { selectedColumnOption = 2 } + ) + Text("Option 3") + } + } + + Button( + onClick = { + scope.launch { + sheetState.hide() + }.invokeOnCompletion { + if (!sheetState.isVisible) { + showBottomSheet = false + } + } + }) { + Text("Hide bottom sheet") + } + + Spacer(modifier = Modifier.height(20.dp)) + } + } + } + } } \ No newline at end of file diff --git a/me-design/src/main/res/values/strings.xml b/me-design/src/main/res/values/strings.xml index 96b6faa..ebce1a3 100644 --- a/me-design/src/main/res/values/strings.xml +++ b/me-design/src/main/res/values/strings.xml @@ -4,4 +4,5 @@ List Activity Adaptive Nav Activity Base Activity + icon \ No newline at end of file From d50b996f992336d6c9fe702986159928f20a553b Mon Sep 17 00:00:00 2001 From: RocqJones Date: Tue, 5 Mar 2024 17:55:43 +0300 Subject: [PATCH 08/10] updates --- .../java/com/rocqjones/mesdk/screens/HomeScreen.kt | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/rocqjones/mesdk/screens/HomeScreen.kt b/app/src/main/java/com/rocqjones/mesdk/screens/HomeScreen.kt index 3fa3389..cab9a9a 100644 --- a/app/src/main/java/com/rocqjones/mesdk/screens/HomeScreen.kt +++ b/app/src/main/java/com/rocqjones/mesdk/screens/HomeScreen.kt @@ -37,23 +37,19 @@ fun HomeScreen(navController: NavHostController) { // list Button( - modifier = Modifier - .padding(padding) - .fillMaxWidth(), + modifier = Modifier.padding(padding).fillMaxWidth(), shape = MaterialTheme.shapes.medium, onClick = { navController.navigate(Screen.EndlessScreen.route) } ) { Text( - "Vertical Endless List", + "Vertical Bouncing Scrolling List", style = MaterialTheme.typography.bodyLarge ) } // Bottom Sheets Button( - modifier = Modifier - .padding(padding) - .fillMaxWidth(), + modifier = Modifier.padding(padding).fillMaxWidth(), shape = MaterialTheme.shapes.medium, onClick = { navController.navigate(Screen.BottomSheetDialogScreen.route) } ) { From 17d024e8aa237218f58aeb4faba22085716ad17c Mon Sep 17 00:00:00 2001 From: RocqJones Date: Wed, 6 Mar 2024 12:32:14 +0300 Subject: [PATCH 09/10] refactor --- app/src/main/AndroidManifest.xml | 1 - app/src/main/java/com/rocqjones/mesdk/MainActivity.kt | 2 +- .../main/java/com/rocqjones/me_design/base/BaseActivity.kt | 6 +++--- .../java/com/rocqjones/me_design}/screens/HomeScreen.kt | 2 +- 4 files changed, 5 insertions(+), 6 deletions(-) rename {app/src/main/java/com/rocqjones/mesdk => me-design/src/main/java/com/rocqjones/me_design}/screens/HomeScreen.kt (98%) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6d71b4b..acd1856 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -14,7 +14,6 @@ diff --git a/app/src/main/java/com/rocqjones/mesdk/MainActivity.kt b/app/src/main/java/com/rocqjones/mesdk/MainActivity.kt index 2b1bd92..a6ef94d 100644 --- a/app/src/main/java/com/rocqjones/mesdk/MainActivity.kt +++ b/app/src/main/java/com/rocqjones/mesdk/MainActivity.kt @@ -15,9 +15,9 @@ import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController import com.rocqjones.me_design.screens.BottomSheetDialogScreen import com.rocqjones.me_design.screens.EndlessScreen +import com.rocqjones.me_design.screens.HomeScreen import com.rocqjones.me_design.ui.theme.MeSDKTheme import com.rocqjones.me_logic.models.Screen -import com.rocqjones.mesdk.screens.HomeScreen /** * This is the first launcher screen of the SDK. diff --git a/me-design/src/main/java/com/rocqjones/me_design/base/BaseActivity.kt b/me-design/src/main/java/com/rocqjones/me_design/base/BaseActivity.kt index f2559fd..faead9b 100644 --- a/me-design/src/main/java/com/rocqjones/me_design/base/BaseActivity.kt +++ b/me-design/src/main/java/com/rocqjones/me_design/base/BaseActivity.kt @@ -12,8 +12,8 @@ import com.rocqjones.me_logic.utils.ToastUtils */ abstract class BaseActivity : ComponentActivity() { - private var activityContext: Activity? = null - var toastUtils: ToastUtils? = null + lateinit var activityContext: Activity + lateinit var toastUtils: ToastUtils override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -23,7 +23,7 @@ abstract class BaseActivity : ComponentActivity() { private fun initialize() { try { activityContext = activityContext() - toastUtils = ToastUtils(activityContext!!) + toastUtils = ToastUtils(activityContext) } catch (e: Exception) { e.printStackTrace() } diff --git a/app/src/main/java/com/rocqjones/mesdk/screens/HomeScreen.kt b/me-design/src/main/java/com/rocqjones/me_design/screens/HomeScreen.kt similarity index 98% rename from app/src/main/java/com/rocqjones/mesdk/screens/HomeScreen.kt rename to me-design/src/main/java/com/rocqjones/me_design/screens/HomeScreen.kt index cab9a9a..a51ccd7 100644 --- a/app/src/main/java/com/rocqjones/mesdk/screens/HomeScreen.kt +++ b/me-design/src/main/java/com/rocqjones/me_design/screens/HomeScreen.kt @@ -1,4 +1,4 @@ -package com.rocqjones.mesdk.screens +package com.rocqjones.me_design.screens import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box From cd37bffd9ebe06c3c2a0e2e36dfaf9b631b2acbf Mon Sep 17 00:00:00 2001 From: RocqJones Date: Wed, 6 Mar 2024 12:38:39 +0300 Subject: [PATCH 10/10] alignment --- .../com/rocqjones/me_design/screens/HomeScreen.kt | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/me-design/src/main/java/com/rocqjones/me_design/screens/HomeScreen.kt b/me-design/src/main/java/com/rocqjones/me_design/screens/HomeScreen.kt index a51ccd7..77efa2e 100644 --- a/me-design/src/main/java/com/rocqjones/me_design/screens/HomeScreen.kt +++ b/me-design/src/main/java/com/rocqjones/me_design/screens/HomeScreen.kt @@ -1,8 +1,8 @@ package com.rocqjones.me_design.screens -import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding @@ -19,22 +19,27 @@ import com.rocqjones.me_logic.models.Screen @Composable fun HomeScreen(navController: NavHostController) { - Box { + Box(modifier = Modifier.fillMaxSize()) { /** * When the button is clicked, should navigate to the respective UI */ Column( modifier = Modifier.fillMaxSize(), - verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally ) { val padding = 8.dp + val space = 16.dp + + Spacer(modifier = Modifier.padding(space)) + Text( "Welcome to the Me SDK!", style = MaterialTheme.typography.headlineMedium, color = MaterialTheme.colorScheme.secondary, ) + Spacer(modifier = Modifier.padding(space)) + // list Button( modifier = Modifier.padding(padding).fillMaxWidth(),