From 1e30b2573ed7b7a53f70e0f6bcb6a060cda08570 Mon Sep 17 00:00:00 2001 From: Jeel Dobariya Date: Sun, 16 Nov 2025 16:07:02 +0530 Subject: [PATCH 1/6] chore: write version catalog in a new style --- gradle/libs.versions.toml | 42 ++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 9d85fa74..040f8578 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -14,6 +14,7 @@ coroutines = "1.10.2" lifecycle = "2.9.4" koin = "4.1.1" + # Plugin versions agp = "8.13.1" kotlin-plugin = "2.2.21" @@ -21,40 +22,41 @@ ksp = "2.3.2" oss-license-plugin = "0.10.9" # Also update in settings.gradle.kts [libraries] -kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib-jdk8", version.ref = "kotlin" } +kotlin-stdlib = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib-jdk8", version.ref = "kotlin" } -material = { module = "com.google.android.material:material", version.ref = "material" } -oss-license = { module = "com.google.android.gms:play-services-oss-licenses", version.ref = "oss-license" } -appcompat = { module = "androidx.appcompat:appcompat", version.ref = "appcompat" } +material = { group = "com.google.android.material", name = "material", version.ref = "material" } +oss-license = { group = "com.google.android.gms", name = "play-services-oss-licenses", version.ref = "oss-license" } +appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" } # Room -room-ktx = { module = "androidx.room:room-ktx", version.ref = "room" } -room-compiler = { module = "androidx.room:room-compiler", version.ref = "room" } -room-testing = { module = "androidx.room:room-testing", version.ref = "room" } +room-ktx = { group = "androidx.room", name = "room-ktx", version.ref = "room" } +room-compiler = { group = "androidx.room", name = "room-compiler", version.ref = "room" } +room-testing = { group = "androidx.room", name = "room-testing", version.ref = "room" } # Networking -okhttp = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp"} +okhttp = { group = "com.squareup.okhttp3", name = "okhttp", version.ref = "okhttp"} # Coroutines -coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "coroutines" } -coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "coroutines" } -coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "coroutines" } +coroutines-core = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-core", version.ref = "coroutines" } +coroutines-android = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-android", version.ref = "coroutines" } +coroutines-test = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-test", version.ref = "coroutines" } # Android Lifecycle -lifecycle-runtime = { module = "androidx.lifecycle:lifecycle-runtime-ktx", version.ref = "lifecycle" } -lifecycle-viewmodel = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref = "lifecycle" } +lifecycle-runtime = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "lifecycle" } +lifecycle-viewmodel = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-ktx", version.ref = "lifecycle" } # Dependency Injection -koin = { module = "io.insert-koin:koin-android", version.ref = "koin" } -# koin-compose = { module = "io.insert-koin:koin-androidx-compose", version.ref = "koin" } +koin = { group = "io.insert-koin", name = "koin-android", version.ref = "koin" } +# koin-compose = { group = "io.insert-koin", name = "koin-androidx-compose", version.ref = "koin" } -json = { module = "org.json:json", version.ref = "json" } +json = { group = "org.json", name = "json", version.ref = "json" } # Testing -junit = { module = "junit:junit", version.ref = "junit" } -truth = { module = "com.google.truth:truth", version.ref = "truth" } -androidx-test-ext-junit = { module = "androidx.test.ext:junit", version.ref = "androidx-test-ext-junit" } -espresso-core = { module = "androidx.test.espresso:espresso-core", version.ref = "espresso-core" } +junit = { group = "junit", name = "junit", version.ref = "junit" } +truth = { group = "com.google.truth", name = "truth", version.ref = "truth" } +androidx-test-ext-junit = { group = "androidx.test.ext", name = "junit", version.ref = "androidx-test-ext-junit" } +espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espresso-core" } + [bundles] # Grouping related Android Architecture Components From 737ae7454326bae46e9bef122d70cfb75ca8eb1b Mon Sep 17 00:00:00 2001 From: Jeel Dobariya Date: Sun, 16 Nov 2025 16:53:36 +0530 Subject: [PATCH 2/6] chore(deps): add jetpack compose releated dependency --- app/build.gradle.kts | 12 ++++++++++-- build.gradle.kts | 1 + gradle/libs.versions.toml | 33 +++++++++++++++++++++++++++------ 3 files changed, 38 insertions(+), 8 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 9a29d6e4..23e01afe 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -7,6 +7,7 @@ import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { alias(libs.plugins.android.application) alias(libs.plugins.kotlin.android) + alias(libs.plugins.compose.compiler) alias(libs.plugins.ksp) alias(libs.plugins.oss.licenses) } @@ -135,6 +136,7 @@ android { buildFeatures { viewBinding = true buildConfig = true + compose = true } } @@ -145,6 +147,11 @@ android { } dependencies { + // Jetpack Compose + implementation(libs.bundles.compose) + implementation(platform(libs.compose.bom)) + debugImplementation(libs.compose.ui.tooling.debug) + // Standard Kotlin Libraries implementation(libs.kotlin.stdlib) @@ -168,7 +175,7 @@ dependencies { implementation(libs.bundles.lifecycle) // Dependency Injection - implementation(libs.koin) + implementation(libs.bundles.koin) // --- Testing --- @@ -177,8 +184,9 @@ dependencies { testImplementation(libs.bundles.unit.test) // Android Instrumented Testing (Android Test Bundle) + androidTestImplementation(platform(libs.compose.bom)) androidTestImplementation(libs.bundles.android.test) androidTestImplementation(libs.room.testing) - androidTestImplementation(libs.coroutines.test) + androidTestImplementation(libs.bundles.coroutines.test) androidTestImplementation(libs.truth) // Keeping truth explicit for androidTest, though it's in both bundles. } diff --git a/build.gradle.kts b/build.gradle.kts index 92a2fdd2..81899815 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,6 +1,7 @@ plugins { alias(libs.plugins.android.application) apply false alias(libs.plugins.kotlin.android) apply false + alias(libs.plugins.compose.compiler) apply false alias(libs.plugins.ksp) apply false alias(libs.plugins.oss.licenses) apply false } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 040f8578..b11ad9de 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -13,7 +13,9 @@ espresso-core = "3.7.0" coroutines = "1.10.2" lifecycle = "2.9.4" koin = "4.1.1" - +composeBom = "2025.11.00" +compose-activity = "1.11.0" +compose-viewmodel = "2.9.4" # Plugin versions agp = "8.13.1" @@ -22,8 +24,18 @@ ksp = "2.3.2" oss-license-plugin = "0.10.9" # Also update in settings.gradle.kts [libraries] +# Kotlin Std libs kotlin-stdlib = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib-jdk8", version.ref = "kotlin" } +# Jetpack Compose +compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "composeBom" } +compose-ui-material = { group = "androidx.compose.material3", name = "material3" } +compose-ui-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" } +compose-ui-tooling-debug = { group = "androidx.compose.ui", name = "ui-tooling" } +compose-activity = { group = "androidx.activity", name= "activity-compose", version.ref = "compose-activity" } +compose-viewmodel = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-compose", version.ref = "compose-viewmodel" } + +# Core Dependency material = { group = "com.google.android.material", name = "material", version.ref = "material" } oss-license = { group = "com.google.android.gms", name = "play-services-oss-licenses", version.ref = "oss-license" } appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" } @@ -47,7 +59,7 @@ lifecycle-viewmodel = { group = "androidx.lifecycle", name = "lifecycle-viewmode # Dependency Injection koin = { group = "io.insert-koin", name = "koin-android", version.ref = "koin" } -# koin-compose = { group = "io.insert-koin", name = "koin-androidx-compose", version.ref = "koin" } +koin-compose = { group = "io.insert-koin", name = "koin-androidx-compose", version.ref = "koin" } json = { group = "org.json", name = "json", version.ref = "json" } @@ -59,20 +71,29 @@ espresso-core = { group = "androidx.test.espresso", name = "espresso-core", vers [bundles] -# Grouping related Android Architecture Components +# Grouping Jetpack Compose Dependencies +compose = ["compose-ui-material", "compose-ui-preview", "compose-activity", "compose-viewmodel"] +compose-debug = ["compose-ui-tooling-debug"] + +# Grouping Android Architecture Releated Components room = ["room-ktx", "room-testing"] lifecycle = ["lifecycle-runtime", "lifecycle-viewmodel"] -# Grouping coroutines dependencies +# Grouping Coroutines Dependencies coroutines = ["coroutines-core", "coroutines-android"] -coroutines-test = ["coroutines-core", "coroutines-test"] # Core is often needed for testing +coroutines-test = ["coroutines-core", "coroutines-test"] -# Grouping general test dependencies +# Grouping Dependency Injection Dependencies +koin = ["koin", "koin-compose"] + +# Grouping General Test Dependencies unit-test = ["junit", "truth"] android-test = ["androidx-test-ext-junit", "espresso-core"] + [plugins] android-application = { id = "com.android.application", version.ref = "agp" } kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin-plugin" } +compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } oss-licenses = { id = "com.google.android.gms.oss-licenses-plugin", version.ref = "oss-license-plugin" } From 9f7eb57d82359ac93543ea55732d58042c37bd6d Mon Sep 17 00:00:00 2001 From: Jeel Dobariya Date: Sun, 16 Nov 2025 17:13:44 +0530 Subject: [PATCH 3/6] feat: add a new compose activity --- app/build.gradle.kts | 14 +++++ app/src/main/AndroidManifest.xml | 17 ++++-- .../passcodes/newui/MainActivity.kt | 47 +++++++++++++++ .../passcodes/newui/ui/theme/Color.kt | 11 ++++ .../passcodes/newui/ui/theme/Theme.kt | 57 +++++++++++++++++++ .../passcodes/newui/ui/theme/Type.kt | 34 +++++++++++ app/src/main/res/values/strings.xml | 1 + gradle/libs.versions.toml | 4 ++ 8 files changed, 179 insertions(+), 6 deletions(-) create mode 100644 app/src/main/kotlin/com/jeeldobariya/passcodes/newui/MainActivity.kt create mode 100644 app/src/main/kotlin/com/jeeldobariya/passcodes/newui/ui/theme/Color.kt create mode 100644 app/src/main/kotlin/com/jeeldobariya/passcodes/newui/ui/theme/Theme.kt create mode 100644 app/src/main/kotlin/com/jeeldobariya/passcodes/newui/ui/theme/Type.kt diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 23e01afe..2c09710b 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -139,6 +139,16 @@ android { compose = true } } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + } + kotlinOptions { + jvmTarget = "11" + } + buildFeatures { + compose = true + } ksp { val location = "$projectDir/schemas" @@ -150,6 +160,9 @@ dependencies { // Jetpack Compose implementation(libs.bundles.compose) implementation(platform(libs.compose.bom)) + implementation(libs.androidx.ui) + implementation(libs.androidx.ui.graphics) + androidTestImplementation(libs.androidx.ui.test.junit4) debugImplementation(libs.compose.ui.tooling.debug) // Standard Kotlin Libraries @@ -162,6 +175,7 @@ dependencies { // Data/Persistence (Room Bundle) implementation(libs.bundles.room) + debugImplementation(libs.androidx.ui.test.manifest) ksp(libs.room.compiler) // Networking/Parsing diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2c896861..3213140b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,15 +16,20 @@ android:theme="@style/PasscodesTheme.Default" tools:targetApi="33"> + android:name=".newui.MainActivity" + android:exported="true" + android:label="@string/title_activity_main" + android:theme="@style/PasscodesTheme.Default"> - + + @@ -46,9 +51,9 @@ + android:permission="android.permission.BIND_AUTOFILL_SERVICE"> @@ -59,4 +64,4 @@ - + \ No newline at end of file diff --git a/app/src/main/kotlin/com/jeeldobariya/passcodes/newui/MainActivity.kt b/app/src/main/kotlin/com/jeeldobariya/passcodes/newui/MainActivity.kt new file mode 100644 index 00000000..731fa7d9 --- /dev/null +++ b/app/src/main/kotlin/com/jeeldobariya/passcodes/newui/MainActivity.kt @@ -0,0 +1,47 @@ +package com.jeeldobariya.passcodes.newui + +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.activity.enableEdgeToEdge +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Scaffold +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview +import com.jeeldobariya.passcodes.newui.ui.theme.PasscodesTheme + +class MainActivity : ComponentActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + enableEdgeToEdge() + setContent { + PasscodesTheme { + Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding -> + Greeting( + name = "Android", + modifier = Modifier.padding(innerPadding) + ) + } + } + } + } +} + +@Composable +fun Greeting(name: String, modifier: Modifier = Modifier) { + Text( + text = "Hello $name!", + modifier = modifier + ) +} + +@Preview(showBackground = true) +@Composable +fun GreetingPreview() { + PasscodesTheme { + Greeting("Android") + } +} diff --git a/app/src/main/kotlin/com/jeeldobariya/passcodes/newui/ui/theme/Color.kt b/app/src/main/kotlin/com/jeeldobariya/passcodes/newui/ui/theme/Color.kt new file mode 100644 index 00000000..febfaa9b --- /dev/null +++ b/app/src/main/kotlin/com/jeeldobariya/passcodes/newui/ui/theme/Color.kt @@ -0,0 +1,11 @@ +package com.jeeldobariya.passcodes.newui.ui.theme + +import androidx.compose.ui.graphics.Color + +val Purple80 = Color(0xFFD0BCFF) +val PurpleGrey80 = Color(0xFFCCC2DC) +val Pink80 = Color(0xFFEFB8C8) + +val Purple40 = Color(0xFF6650a4) +val PurpleGrey40 = Color(0xFF625b71) +val Pink40 = Color(0xFF7D5260) diff --git a/app/src/main/kotlin/com/jeeldobariya/passcodes/newui/ui/theme/Theme.kt b/app/src/main/kotlin/com/jeeldobariya/passcodes/newui/ui/theme/Theme.kt new file mode 100644 index 00000000..aa3f4463 --- /dev/null +++ b/app/src/main/kotlin/com/jeeldobariya/passcodes/newui/ui/theme/Theme.kt @@ -0,0 +1,57 @@ +package com.jeeldobariya.passcodes.newui.ui.theme + +import android.os.Build +import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.darkColorScheme +import androidx.compose.material3.dynamicDarkColorScheme +import androidx.compose.material3.dynamicLightColorScheme +import androidx.compose.material3.lightColorScheme +import androidx.compose.runtime.Composable +import androidx.compose.ui.platform.LocalContext + +private val DarkColorScheme = darkColorScheme( + primary = Purple80, + secondary = PurpleGrey80, + tertiary = Pink80 +) + +private val LightColorScheme = lightColorScheme( + primary = Purple40, + secondary = PurpleGrey40, + tertiary = Pink40 + + /* Other default colors to override + background = Color(0xFFFFFBFE), + surface = Color(0xFFFFFBFE), + onPrimary = Color.White, + onSecondary = Color.White, + onTertiary = Color.White, + onBackground = Color(0xFF1C1B1F), + onSurface = Color(0xFF1C1B1F), + */ +) + +@Composable +fun PasscodesTheme( + darkTheme: Boolean = isSystemInDarkTheme(), + // Dynamic color is available on Android 12+ + dynamicColor: Boolean = true, + content: @Composable () -> Unit +) { + val colorScheme = when { + dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> { + val context = LocalContext.current + if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context) + } + + darkTheme -> DarkColorScheme + else -> LightColorScheme + } + + MaterialTheme( + colorScheme = colorScheme, + typography = Typography, + content = content + ) +} diff --git a/app/src/main/kotlin/com/jeeldobariya/passcodes/newui/ui/theme/Type.kt b/app/src/main/kotlin/com/jeeldobariya/passcodes/newui/ui/theme/Type.kt new file mode 100644 index 00000000..bfcdc22b --- /dev/null +++ b/app/src/main/kotlin/com/jeeldobariya/passcodes/newui/ui/theme/Type.kt @@ -0,0 +1,34 @@ +package com.jeeldobariya.passcodes.newui.ui.theme + +import androidx.compose.material3.Typography +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.sp + +// Set of Material typography styles to start with +val Typography = Typography( + bodyLarge = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Normal, + fontSize = 16.sp, + lineHeight = 24.sp, + letterSpacing = 0.5.sp + ) + /* Other default text styles to override + titleLarge = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Normal, + fontSize = 22.sp, + lineHeight = 28.sp, + letterSpacing = 0.sp + ), + labelSmall = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Medium, + fontSize = 11.sp, + lineHeight = 16.sp, + letterSpacing = 0.5.sp + ) + */ +) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 52971db0..9b3d2cef 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -99,4 +99,5 @@ Confirm Discard Passcodes Logo + MainActivity diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index b11ad9de..31c4d18d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -68,6 +68,10 @@ junit = { group = "junit", name = "junit", version.ref = "junit" } truth = { group = "com.google.truth", name = "truth", version.ref = "truth" } androidx-test-ext-junit = { group = "androidx.test.ext", name = "junit", version.ref = "androidx-test-ext-junit" } espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espresso-core" } +androidx-ui = { group = "androidx.compose.ui", name = "ui" } +androidx-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics" } +androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" } +androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" } [bundles] From 9e85a55e7fa249b4d9f4da316e0b34c4b71ef24a Mon Sep 17 00:00:00 2001 From: Jeel Dobariya Date: Sun, 16 Nov 2025 17:33:24 +0530 Subject: [PATCH 4/6] feat: create a new ui activity and seperated old ui & new ui --- app/src/main/AndroidManifest.xml | 20 +-- .../jeeldobariya/passcodes/di/appModule.kt | 8 +- .../passcodes/newui/MainActivity.kt | 47 ------- .../{ui => oldui}/AboutUsActivity.kt | 2 +- .../{ui => oldui}/LicenseActivity.kt | 2 +- .../{ui => oldui}/LoadPasswordAction.kt | 2 +- .../{ui => oldui}/LoadPasswordActivity.kt | 4 +- .../{ui => oldui}/LoadPasswordState.kt | 2 +- .../{ui => oldui}/LoadPasswordViewModel.kt | 2 +- .../passcodes/oldui/MainActivity.kt | 80 +++++++++++ .../{ui => oldui}/PasswordManagerActivity.kt | 2 +- .../{ui => oldui}/SavePasswordAction.kt | 2 +- .../{ui => oldui}/SavePasswordActivity.kt | 2 +- .../{ui => oldui}/SavePasswordState.kt | 2 +- .../{ui => oldui}/SavePasswordViewModel.kt | 2 +- .../{ui => oldui}/SettingsActivity.kt | 3 +- .../{ui => oldui}/UpdatePasswordAction.kt | 2 +- .../{ui => oldui}/UpdatePasswordActivity.kt | 2 +- .../{ui => oldui}/UpdatePasswordState.kt | 2 +- .../{ui => oldui}/UpdatePasswordViewModel.kt | 2 +- .../{ui => oldui}/ViewPasswordAction.kt | 2 +- .../{ui => oldui}/ViewPasswordActivity.kt | 3 +- .../{ui => oldui}/ViewPasswordState.kt | 2 +- .../{ui => oldui}/ViewPasswordViewModel.kt | 2 +- .../{ui => oldui}/adapter/PasswordAdapter.kt | 2 +- .../jeeldobariya/passcodes/ui/MainActivity.kt | 127 +++++++++--------- .../passcodes/{newui => ui}/ui/theme/Color.kt | 2 +- .../passcodes/{newui => ui}/ui/theme/Theme.kt | 2 +- .../passcodes/{newui => ui}/ui/theme/Type.kt | 2 +- app/src/main/res/layout/activity_about_us.xml | 2 +- app/src/main/res/layout/activity_license.xml | 2 +- .../res/layout/activity_load_password.xml | 2 +- app/src/main/res/layout/activity_main.xml | 2 +- .../res/layout/activity_password_manager.xml | 2 +- .../res/layout/activity_save_password.xml | 2 +- app/src/main/res/layout/activity_settings.xml | 2 +- .../res/layout/activity_update_password.xml | 2 +- .../res/layout/activity_view_password.xml | 2 +- 38 files changed, 194 insertions(+), 158 deletions(-) delete mode 100644 app/src/main/kotlin/com/jeeldobariya/passcodes/newui/MainActivity.kt rename app/src/main/kotlin/com/jeeldobariya/passcodes/{ui => oldui}/AboutUsActivity.kt (97%) rename app/src/main/kotlin/com/jeeldobariya/passcodes/{ui => oldui}/LicenseActivity.kt (96%) rename app/src/main/kotlin/com/jeeldobariya/passcodes/{ui => oldui}/LoadPasswordAction.kt (69%) rename app/src/main/kotlin/com/jeeldobariya/passcodes/{ui => oldui}/LoadPasswordActivity.kt (96%) rename app/src/main/kotlin/com/jeeldobariya/passcodes/{ui => oldui}/LoadPasswordState.kt (81%) rename app/src/main/kotlin/com/jeeldobariya/passcodes/{ui => oldui}/LoadPasswordViewModel.kt (96%) create mode 100644 app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/MainActivity.kt rename app/src/main/kotlin/com/jeeldobariya/passcodes/{ui => oldui}/PasswordManagerActivity.kt (99%) rename app/src/main/kotlin/com/jeeldobariya/passcodes/{ui => oldui}/SavePasswordAction.kt (90%) rename app/src/main/kotlin/com/jeeldobariya/passcodes/{ui => oldui}/SavePasswordActivity.kt (98%) rename app/src/main/kotlin/com/jeeldobariya/passcodes/{ui => oldui}/SavePasswordState.kt (81%) rename app/src/main/kotlin/com/jeeldobariya/passcodes/{ui => oldui}/SavePasswordViewModel.kt (97%) rename app/src/main/kotlin/com/jeeldobariya/passcodes/{ui => oldui}/SettingsActivity.kt (98%) rename app/src/main/kotlin/com/jeeldobariya/passcodes/{ui => oldui}/UpdatePasswordAction.kt (91%) rename app/src/main/kotlin/com/jeeldobariya/passcodes/{ui => oldui}/UpdatePasswordActivity.kt (98%) rename app/src/main/kotlin/com/jeeldobariya/passcodes/{ui => oldui}/UpdatePasswordState.kt (82%) rename app/src/main/kotlin/com/jeeldobariya/passcodes/{ui => oldui}/UpdatePasswordViewModel.kt (98%) rename app/src/main/kotlin/com/jeeldobariya/passcodes/{ui => oldui}/ViewPasswordAction.kt (87%) rename app/src/main/kotlin/com/jeeldobariya/passcodes/{ui => oldui}/ViewPasswordActivity.kt (98%) rename app/src/main/kotlin/com/jeeldobariya/passcodes/{ui => oldui}/ViewPasswordState.kt (84%) rename app/src/main/kotlin/com/jeeldobariya/passcodes/{ui => oldui}/ViewPasswordViewModel.kt (97%) rename app/src/main/kotlin/com/jeeldobariya/passcodes/{ui => oldui}/adapter/PasswordAdapter.kt (97%) rename app/src/main/kotlin/com/jeeldobariya/passcodes/{newui => ui}/ui/theme/Color.kt (83%) rename app/src/main/kotlin/com/jeeldobariya/passcodes/{newui => ui}/ui/theme/Theme.kt (97%) rename app/src/main/kotlin/com/jeeldobariya/passcodes/{newui => ui}/ui/theme/Type.kt (95%) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3213140b..b8ac6c9b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,7 +16,7 @@ android:theme="@style/PasscodesTheme.Default" tools:targetApi="33"> @@ -27,17 +27,17 @@ - - - - - - - - + + + + + + + + - Greeting( - name = "Android", - modifier = Modifier.padding(innerPadding) - ) - } - } - } - } -} - -@Composable -fun Greeting(name: String, modifier: Modifier = Modifier) { - Text( - text = "Hello $name!", - modifier = modifier - ) -} - -@Preview(showBackground = true) -@Composable -fun GreetingPreview() { - PasscodesTheme { - Greeting("Android") - } -} diff --git a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/AboutUsActivity.kt b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/AboutUsActivity.kt similarity index 97% rename from app/src/main/kotlin/com/jeeldobariya/passcodes/ui/AboutUsActivity.kt rename to app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/AboutUsActivity.kt index 8fb28137..c4ef8a2d 100644 --- a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/AboutUsActivity.kt +++ b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/AboutUsActivity.kt @@ -1,4 +1,4 @@ -package com.jeeldobariya.passcodes.ui +package com.jeeldobariya.passcodes.oldui import android.content.Intent import android.os.Bundle diff --git a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/LicenseActivity.kt b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/LicenseActivity.kt similarity index 96% rename from app/src/main/kotlin/com/jeeldobariya/passcodes/ui/LicenseActivity.kt rename to app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/LicenseActivity.kt index 7cb9ad01..d31bd781 100644 --- a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/LicenseActivity.kt +++ b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/LicenseActivity.kt @@ -1,4 +1,4 @@ -package com.jeeldobariya.passcodes.ui +package com.jeeldobariya.passcodes.oldui import android.content.Intent import android.os.Bundle diff --git a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/LoadPasswordAction.kt b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/LoadPasswordAction.kt similarity index 69% rename from app/src/main/kotlin/com/jeeldobariya/passcodes/ui/LoadPasswordAction.kt rename to app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/LoadPasswordAction.kt index 332a9995..ff18f46f 100644 --- a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/LoadPasswordAction.kt +++ b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/LoadPasswordAction.kt @@ -1,4 +1,4 @@ -package com.jeeldobariya.passcodes.ui +package com.jeeldobariya.passcodes.oldui sealed interface LoadPasswordAction { data object RefreshPassword: LoadPasswordAction diff --git a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/LoadPasswordActivity.kt b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/LoadPasswordActivity.kt similarity index 96% rename from app/src/main/kotlin/com/jeeldobariya/passcodes/ui/LoadPasswordActivity.kt rename to app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/LoadPasswordActivity.kt index 408e6ede..ef30c244 100644 --- a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/LoadPasswordActivity.kt +++ b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/LoadPasswordActivity.kt @@ -1,4 +1,4 @@ -package com.jeeldobariya.passcodes.ui +package com.jeeldobariya.passcodes.oldui import android.content.Intent import android.os.Bundle @@ -8,7 +8,7 @@ import androidx.core.view.WindowCompat import com.jeeldobariya.passcodes.R import com.jeeldobariya.passcodes.database.Password import com.jeeldobariya.passcodes.databinding.ActivityLoadPasswordBinding -import com.jeeldobariya.passcodes.ui.adapter.PasswordAdapter +import com.jeeldobariya.passcodes.oldui.adapter.PasswordAdapter import com.jeeldobariya.passcodes.utils.CommonUtils import com.jeeldobariya.passcodes.utils.collectLatestLifecycleFlow import org.koin.androidx.viewmodel.ext.android.viewModel diff --git a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/LoadPasswordState.kt b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/LoadPasswordState.kt similarity index 81% rename from app/src/main/kotlin/com/jeeldobariya/passcodes/ui/LoadPasswordState.kt rename to app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/LoadPasswordState.kt index f18b8942..e017cb43 100644 --- a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/LoadPasswordState.kt +++ b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/LoadPasswordState.kt @@ -1,4 +1,4 @@ -package com.jeeldobariya.passcodes.ui +package com.jeeldobariya.passcodes.oldui import com.jeeldobariya.passcodes.database.Password diff --git a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/LoadPasswordViewModel.kt b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/LoadPasswordViewModel.kt similarity index 96% rename from app/src/main/kotlin/com/jeeldobariya/passcodes/ui/LoadPasswordViewModel.kt rename to app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/LoadPasswordViewModel.kt index 7d09adaa..28a50813 100644 --- a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/LoadPasswordViewModel.kt +++ b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/LoadPasswordViewModel.kt @@ -1,4 +1,4 @@ -package com.jeeldobariya.passcodes.ui +package com.jeeldobariya.passcodes.oldui import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope diff --git a/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/MainActivity.kt b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/MainActivity.kt new file mode 100644 index 00000000..0c6a9fb1 --- /dev/null +++ b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/MainActivity.kt @@ -0,0 +1,80 @@ +package com.jeeldobariya.passcodes.oldui + +import android.content.Intent +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity +import androidx.core.view.WindowCompat +import androidx.lifecycle.lifecycleScope +import com.jeeldobariya.passcodes.BuildConfig +import com.jeeldobariya.passcodes.databinding.ActivityMainBinding +import com.jeeldobariya.passcodes.utils.CommonUtils +import com.jeeldobariya.passcodes.utils.UpdateChecker +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch + +// import com.jeeldobariya.passcodes.utils.Permissions + +class MainActivity : AppCompatActivity() { + + // private lateinit var permissionsHandle: Permissions + + private lateinit var binding: ActivityMainBinding + + override fun onCreate(savedInstanceState: Bundle?) { + CommonUtils.updateCurrTheme(this) + super.onCreate(savedInstanceState) + binding = ActivityMainBinding.inflate(layoutInflater) + setContentView(binding.root) + + lifecycleScope.launch(Dispatchers.IO) { + UpdateChecker.checkVersion(this@MainActivity, BuildConfig.VERSION_NAME) + } + + // Add event onclick listener + addOnClickListenerOnButton() + + // Make window fullscreen + WindowCompat.setDecorFitsSystemWindows(window, false) + + /* Comment the code as permission is not need to write into app data dir. + // Check and request permission when the app is first opened + permissionsHandle = Permissions(this) + if (!permissionsHandle.checkPermission()) permissionsHandle.requestPermission() + */ + } + + /* Comment the code as permission is not need to write into app data dir. + override fun onRequestPermissionsResult( + requestCode: Int, permissions: Array, grantResults: IntArray + ) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults) + if (requestCode == Permissions.PERMISSION_REQUEST_CODE) { + if (permissionsHandle.isPermissionGranted(grantResults)) { + // Permission has been granted + Toast.makeText(this, getString(R.string.permission_granted), Toast.LENGTH_LONG).show() + } else { + // Permission not granted + Toast.makeText(this, getString(R.string.permission_denied), Toast.LENGTH_LONG).show() + } + } + } + */ + + // Added all the onclick event listeners + private fun addOnClickListenerOnButton() { + binding.passwordManagerBtn.setOnClickListener { + val passwordManagerIntent = Intent(this, PasswordManagerActivity::class.java) + startActivity(passwordManagerIntent) + } + + binding.settingBtn.setOnClickListener { + val settingIntent = Intent(this, SettingsActivity::class.java) + startActivity(settingIntent) + } + + binding.aboutUsBtn.setOnClickListener { + val aboutUsIntent = Intent(this, AboutUsActivity::class.java) + startActivity(aboutUsIntent) + } + } +} diff --git a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/PasswordManagerActivity.kt b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/PasswordManagerActivity.kt similarity index 99% rename from app/src/main/kotlin/com/jeeldobariya/passcodes/ui/PasswordManagerActivity.kt rename to app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/PasswordManagerActivity.kt index e28777d2..f13ee291 100644 --- a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/PasswordManagerActivity.kt +++ b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/PasswordManagerActivity.kt @@ -1,4 +1,4 @@ -package com.jeeldobariya.passcodes.ui +package com.jeeldobariya.passcodes.oldui import android.content.Intent import android.os.Bundle diff --git a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/SavePasswordAction.kt b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/SavePasswordAction.kt similarity index 90% rename from app/src/main/kotlin/com/jeeldobariya/passcodes/ui/SavePasswordAction.kt rename to app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/SavePasswordAction.kt index 7bf6105d..14634ce5 100644 --- a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/SavePasswordAction.kt +++ b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/SavePasswordAction.kt @@ -1,4 +1,4 @@ -package com.jeeldobariya.passcodes.ui +package com.jeeldobariya.passcodes.oldui sealed interface SavePasswordAction { data class OnChangeDomain(val newDomain: String): SavePasswordAction diff --git a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/SavePasswordActivity.kt b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/SavePasswordActivity.kt similarity index 98% rename from app/src/main/kotlin/com/jeeldobariya/passcodes/ui/SavePasswordActivity.kt rename to app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/SavePasswordActivity.kt index a17990c8..9833cade 100644 --- a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/SavePasswordActivity.kt +++ b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/SavePasswordActivity.kt @@ -1,4 +1,4 @@ -package com.jeeldobariya.passcodes.ui +package com.jeeldobariya.passcodes.oldui import android.os.Bundle import androidx.appcompat.app.AppCompatActivity diff --git a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/SavePasswordState.kt b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/SavePasswordState.kt similarity index 81% rename from app/src/main/kotlin/com/jeeldobariya/passcodes/ui/SavePasswordState.kt rename to app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/SavePasswordState.kt index 01d1274c..8cd30a14 100644 --- a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/SavePasswordState.kt +++ b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/SavePasswordState.kt @@ -1,4 +1,4 @@ -package com.jeeldobariya.passcodes.ui +package com.jeeldobariya.passcodes.oldui data class SavePasswordState( val domain: String = "", diff --git a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/SavePasswordViewModel.kt b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/SavePasswordViewModel.kt similarity index 97% rename from app/src/main/kotlin/com/jeeldobariya/passcodes/ui/SavePasswordViewModel.kt rename to app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/SavePasswordViewModel.kt index 0fb9759e..2fce6577 100644 --- a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/SavePasswordViewModel.kt +++ b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/SavePasswordViewModel.kt @@ -1,4 +1,4 @@ -package com.jeeldobariya.passcodes.ui +package com.jeeldobariya.passcodes.oldui import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope diff --git a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/SettingsActivity.kt b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/SettingsActivity.kt similarity index 98% rename from app/src/main/kotlin/com/jeeldobariya/passcodes/ui/SettingsActivity.kt rename to app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/SettingsActivity.kt index ff164a16..76adb186 100644 --- a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/SettingsActivity.kt +++ b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/SettingsActivity.kt @@ -1,6 +1,5 @@ -package com.jeeldobariya.passcodes.ui +package com.jeeldobariya.passcodes.oldui -import android.content.Context import android.os.Bundle import android.view.View import android.widget.AdapterView diff --git a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/UpdatePasswordAction.kt b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/UpdatePasswordAction.kt similarity index 91% rename from app/src/main/kotlin/com/jeeldobariya/passcodes/ui/UpdatePasswordAction.kt rename to app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/UpdatePasswordAction.kt index 98fd3742..7ef3f60b 100644 --- a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/UpdatePasswordAction.kt +++ b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/UpdatePasswordAction.kt @@ -1,4 +1,4 @@ -package com.jeeldobariya.passcodes.ui +package com.jeeldobariya.passcodes.oldui sealed interface UpdatePasswordAction { data class OnChangeDomain(val newDomain: String): UpdatePasswordAction diff --git a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/UpdatePasswordActivity.kt b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/UpdatePasswordActivity.kt similarity index 98% rename from app/src/main/kotlin/com/jeeldobariya/passcodes/ui/UpdatePasswordActivity.kt rename to app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/UpdatePasswordActivity.kt index 172b5559..4824b8f6 100644 --- a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/UpdatePasswordActivity.kt +++ b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/UpdatePasswordActivity.kt @@ -1,4 +1,4 @@ -package com.jeeldobariya.passcodes.ui +package com.jeeldobariya.passcodes.oldui import android.app.AlertDialog import android.os.Bundle diff --git a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/UpdatePasswordState.kt b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/UpdatePasswordState.kt similarity index 82% rename from app/src/main/kotlin/com/jeeldobariya/passcodes/ui/UpdatePasswordState.kt rename to app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/UpdatePasswordState.kt index 1b4cefaa..767dd9af 100644 --- a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/UpdatePasswordState.kt +++ b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/UpdatePasswordState.kt @@ -1,4 +1,4 @@ -package com.jeeldobariya.passcodes.ui +package com.jeeldobariya.passcodes.oldui data class UpdatePasswordState( val domain: String = "", diff --git a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/UpdatePasswordViewModel.kt b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/UpdatePasswordViewModel.kt similarity index 98% rename from app/src/main/kotlin/com/jeeldobariya/passcodes/ui/UpdatePasswordViewModel.kt rename to app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/UpdatePasswordViewModel.kt index 050d75ba..715a9b45 100644 --- a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/UpdatePasswordViewModel.kt +++ b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/UpdatePasswordViewModel.kt @@ -1,4 +1,4 @@ -package com.jeeldobariya.passcodes.ui +package com.jeeldobariya.passcodes.oldui import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope diff --git a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/ViewPasswordAction.kt b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/ViewPasswordAction.kt similarity index 87% rename from app/src/main/kotlin/com/jeeldobariya/passcodes/ui/ViewPasswordAction.kt rename to app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/ViewPasswordAction.kt index 7c71544f..e40b9a90 100644 --- a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/ViewPasswordAction.kt +++ b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/ViewPasswordAction.kt @@ -1,4 +1,4 @@ -package com.jeeldobariya.passcodes.ui +package com.jeeldobariya.passcodes.oldui sealed interface ViewPasswordAction { data class LoadPassword(val passwordId: Int): ViewPasswordAction diff --git a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/ViewPasswordActivity.kt b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/ViewPasswordActivity.kt similarity index 98% rename from app/src/main/kotlin/com/jeeldobariya/passcodes/ui/ViewPasswordActivity.kt rename to app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/ViewPasswordActivity.kt index e927e5d1..6244bcd5 100644 --- a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/ViewPasswordActivity.kt +++ b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/ViewPasswordActivity.kt @@ -1,4 +1,4 @@ -package com.jeeldobariya.passcodes.ui +package com.jeeldobariya.passcodes.oldui import android.app.AlertDialog import android.content.ClipData @@ -10,7 +10,6 @@ import androidx.appcompat.app.AppCompatActivity import androidx.core.view.WindowCompat import com.jeeldobariya.passcodes.R import com.jeeldobariya.passcodes.databinding.ActivityViewPasswordBinding -import com.jeeldobariya.passcodes.flags.FeatureFlagManager import com.jeeldobariya.passcodes.utils.CommonUtils import com.jeeldobariya.passcodes.utils.collectLatestLifecycleFlow import kotlinx.coroutines.runBlocking diff --git a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/ViewPasswordState.kt b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/ViewPasswordState.kt similarity index 84% rename from app/src/main/kotlin/com/jeeldobariya/passcodes/ui/ViewPasswordState.kt rename to app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/ViewPasswordState.kt index e5e7b099..3809af97 100644 --- a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/ViewPasswordState.kt +++ b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/ViewPasswordState.kt @@ -1,4 +1,4 @@ -package com.jeeldobariya.passcodes.ui +package com.jeeldobariya.passcodes.oldui data class ViewPasswordState( val domain: String = "", diff --git a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/ViewPasswordViewModel.kt b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/ViewPasswordViewModel.kt similarity index 97% rename from app/src/main/kotlin/com/jeeldobariya/passcodes/ui/ViewPasswordViewModel.kt rename to app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/ViewPasswordViewModel.kt index d27279e2..579365d7 100644 --- a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/ViewPasswordViewModel.kt +++ b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/ViewPasswordViewModel.kt @@ -1,4 +1,4 @@ -package com.jeeldobariya.passcodes.ui +package com.jeeldobariya.passcodes.oldui import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope diff --git a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/adapter/PasswordAdapter.kt b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/adapter/PasswordAdapter.kt similarity index 97% rename from app/src/main/kotlin/com/jeeldobariya/passcodes/ui/adapter/PasswordAdapter.kt rename to app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/adapter/PasswordAdapter.kt index 3336e860..249fa700 100644 --- a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/adapter/PasswordAdapter.kt +++ b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/adapter/PasswordAdapter.kt @@ -1,4 +1,4 @@ -package com.jeeldobariya.passcodes.ui.adapter +package com.jeeldobariya.passcodes.oldui.adapter import android.content.Context import android.view.LayoutInflater diff --git a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/MainActivity.kt b/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/MainActivity.kt index 1789a3f8..07c80f09 100644 --- a/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/MainActivity.kt +++ b/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/MainActivity.kt @@ -2,79 +2,84 @@ package com.jeeldobariya.passcodes.ui import android.content.Intent import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import androidx.core.view.WindowCompat -import androidx.lifecycle.lifecycleScope -import com.jeeldobariya.passcodes.BuildConfig -import com.jeeldobariya.passcodes.databinding.ActivityMainBinding -import com.jeeldobariya.passcodes.utils.CommonUtils -import com.jeeldobariya.passcodes.utils.UpdateChecker -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch - -// import com.jeeldobariya.passcodes.utils.Permissions - -class MainActivity : AppCompatActivity() { - - // private lateinit var permissionsHandle: Permissions - - private lateinit var binding: ActivityMainBinding +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.activity.enableEdgeToEdge +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Button +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 androidx.compose.ui.unit.sp +import com.jeeldobariya.passcodes.ui.ui.theme.PasscodesTheme +class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { - CommonUtils.updateCurrTheme(this) super.onCreate(savedInstanceState) - binding = ActivityMainBinding.inflate(layoutInflater) - setContentView(binding.root) - - lifecycleScope.launch(Dispatchers.IO) { - UpdateChecker.checkVersion(this@MainActivity, BuildConfig.VERSION_NAME) + enableEdgeToEdge() + setContent { + PasscodesTheme { + MainScreen { + val loginIntent = Intent(this@MainActivity, com.jeeldobariya.passcodes.oldui.MainActivity::class.java) + startActivity(loginIntent) + } + } } - - // Add event onclick listener - addOnClickListenerOnButton() - - // Make window fullscreen - WindowCompat.setDecorFitsSystemWindows(window, false) - - /* Comment the code as permission is not need to write into app data dir. - // Check and request permission when the app is first opened - permissionsHandle = Permissions(this) - if (!permissionsHandle.checkPermission()) permissionsHandle.requestPermission() - */ } +} - /* Comment the code as permission is not need to write into app data dir. - override fun onRequestPermissionsResult( - requestCode: Int, permissions: Array, grantResults: IntArray +@Composable +fun MainScreen(navigateToOldUi: () -> Unit) { + Surface( + color = MaterialTheme.colorScheme.surface, + modifier = Modifier.fillMaxSize(), + tonalElevation = 5.dp + ) { + Column( + modifier = Modifier + .fillMaxSize() + .padding(24.dp), + verticalArrangement = Arrangement.Center, + horizontalAlignment = Alignment.CenterHorizontally ) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults) - if (requestCode == Permissions.PERMISSION_REQUEST_CODE) { - if (permissionsHandle.isPermissionGranted(grantResults)) { - // Permission has been granted - Toast.makeText(this, getString(R.string.permission_granted), Toast.LENGTH_LONG).show() - } else { - // Permission not granted - Toast.makeText(this, getString(R.string.permission_denied), Toast.LENGTH_LONG).show() - } + Text("Passcodes", fontSize = 24.sp) + Text("You are on New Jetpack UI") + + Spacer(Modifier.padding(12.dp)) + + Button( + onClick = navigateToOldUi + ) { + Text("Back To Old UI", fontSize = 20.sp) + } + Button( + onClick = navigateToOldUi + ) { + Text("Continue New UI", fontSize = 20.sp) } - } - */ - // Added all the onclick event listeners - private fun addOnClickListenerOnButton() { - binding.passwordManagerBtn.setOnClickListener { - val passwordManagerIntent = Intent(this, PasswordManagerActivity::class.java) - startActivity(passwordManagerIntent) - } + Spacer(Modifier.padding(12.dp)) - binding.settingBtn.setOnClickListener { - val settingIntent = Intent(this, SettingsActivity::class.java) - startActivity(settingIntent) + Text("Jetpack UI Is Under Development", fontSize = 6.sp) } + } +} - binding.aboutUsBtn.setOnClickListener { - val aboutUsIntent = Intent(this, AboutUsActivity::class.java) - startActivity(aboutUsIntent) +@Preview(showBackground = true) +@Composable +fun GreetingPreview() { + PasscodesTheme { + MainScreen { + Unit } } } diff --git a/app/src/main/kotlin/com/jeeldobariya/passcodes/newui/ui/theme/Color.kt b/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/ui/theme/Color.kt similarity index 83% rename from app/src/main/kotlin/com/jeeldobariya/passcodes/newui/ui/theme/Color.kt rename to app/src/main/kotlin/com/jeeldobariya/passcodes/ui/ui/theme/Color.kt index febfaa9b..4ed93138 100644 --- a/app/src/main/kotlin/com/jeeldobariya/passcodes/newui/ui/theme/Color.kt +++ b/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/ui/theme/Color.kt @@ -1,4 +1,4 @@ -package com.jeeldobariya.passcodes.newui.ui.theme +package com.jeeldobariya.passcodes.ui.ui.theme import androidx.compose.ui.graphics.Color diff --git a/app/src/main/kotlin/com/jeeldobariya/passcodes/newui/ui/theme/Theme.kt b/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/ui/theme/Theme.kt similarity index 97% rename from app/src/main/kotlin/com/jeeldobariya/passcodes/newui/ui/theme/Theme.kt rename to app/src/main/kotlin/com/jeeldobariya/passcodes/ui/ui/theme/Theme.kt index aa3f4463..047c32fc 100644 --- a/app/src/main/kotlin/com/jeeldobariya/passcodes/newui/ui/theme/Theme.kt +++ b/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/ui/theme/Theme.kt @@ -1,4 +1,4 @@ -package com.jeeldobariya.passcodes.newui.ui.theme +package com.jeeldobariya.passcodes.ui.ui.theme import android.os.Build import androidx.compose.foundation.isSystemInDarkTheme diff --git a/app/src/main/kotlin/com/jeeldobariya/passcodes/newui/ui/theme/Type.kt b/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/ui/theme/Type.kt similarity index 95% rename from app/src/main/kotlin/com/jeeldobariya/passcodes/newui/ui/theme/Type.kt rename to app/src/main/kotlin/com/jeeldobariya/passcodes/ui/ui/theme/Type.kt index bfcdc22b..f456b139 100644 --- a/app/src/main/kotlin/com/jeeldobariya/passcodes/newui/ui/theme/Type.kt +++ b/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/ui/theme/Type.kt @@ -1,4 +1,4 @@ -package com.jeeldobariya.passcodes.newui.ui.theme +package com.jeeldobariya.passcodes.ui.ui.theme import androidx.compose.material3.Typography import androidx.compose.ui.text.TextStyle diff --git a/app/src/main/res/layout/activity_about_us.xml b/app/src/main/res/layout/activity_about_us.xml index 21e2f66a..5800c4a9 100644 --- a/app/src/main/res/layout/activity_about_us.xml +++ b/app/src/main/res/layout/activity_about_us.xml @@ -5,7 +5,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:background="?attr/colorSurface" - tools:context=".ui.AboutUsActivity"> + tools:context=".oldui.AboutUsActivity"> + tools:context=".oldui.LicenseActivity"> + tools:context=".oldui.SettingsActivity"> Date: Sun, 16 Nov 2025 17:47:06 +0530 Subject: [PATCH 5/6] fix: name of application shown on launcher --- app/src/main/AndroidManifest.xml | 1 - app/src/main/res/values/strings.xml | 1 - 2 files changed, 2 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b8ac6c9b..fc3da90e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -18,7 +18,6 @@ diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9b3d2cef..52971db0 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -99,5 +99,4 @@ Confirm Discard Passcodes Logo - MainActivity From 2ac0a83c69a17d50c1fe07e111aaa3717599d86b Mon Sep 17 00:00:00 2001 From: Jeel Dobariya Date: Sun, 16 Nov 2025 18:03:23 +0530 Subject: [PATCH 6/6] chore(deps): add navigation 3 dependency --- app/build.gradle.kts | 5 ++++- gradle/libs.versions.toml | 12 ++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 2c09710b..d71aa566 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -163,7 +163,10 @@ dependencies { implementation(libs.androidx.ui) implementation(libs.androidx.ui.graphics) androidTestImplementation(libs.androidx.ui.test.junit4) - debugImplementation(libs.compose.ui.tooling.debug) + debugImplementation(libs.bundles.compose.debug) + + // Navigation 3 + implementation(libs.bundles.navigation3) // Standard Kotlin Libraries implementation(libs.kotlin.stdlib) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 31c4d18d..f964c6e2 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -16,6 +16,9 @@ koin = "4.1.1" composeBom = "2025.11.00" compose-activity = "1.11.0" compose-viewmodel = "2.9.4" +nav3Core = "1.0.0-rc01" +lifecycleViewmodelNav3 = "2.10.0-rc01" +material3AdaptiveNav3 = "1.3.0-alpha03" # Plugin versions agp = "8.13.1" @@ -35,6 +38,12 @@ compose-ui-tooling-debug = { group = "androidx.compose.ui", name = "ui-tooling" compose-activity = { group = "androidx.activity", name= "activity-compose", version.ref = "compose-activity" } compose-viewmodel = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-compose", version.ref = "compose-viewmodel" } +# Navigation 3 +androidx-navigation3-runtime = { group = "androidx.navigation3", name = "navigation3-runtime", version.ref = "nav3Core" } +androidx-navigation3-ui = { group = "androidx.navigation3", name = "navigation3-ui", version.ref = "nav3Core" } +androidx-lifecycle-viewmodel-navigation3 = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-navigation3", version.ref = "lifecycleViewmodelNav3" } +androidx-material3-adaptive-navigation3 = { group = "androidx.compose.material3.adaptive", name = "adaptive-navigation3", version.ref = "material3AdaptiveNav3" } + # Core Dependency material = { group = "com.google.android.material", name = "material", version.ref = "material" } oss-license = { group = "com.google.android.gms", name = "play-services-oss-licenses", version.ref = "oss-license" } @@ -79,6 +88,9 @@ androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit compose = ["compose-ui-material", "compose-ui-preview", "compose-activity", "compose-viewmodel"] compose-debug = ["compose-ui-tooling-debug"] +# Grouping Navigation 3 Dependencies +navigation3 = ["androidx-navigation3-runtime", "androidx-navigation3-ui", "androidx-lifecycle-viewmodel-navigation3", "androidx-material3-adaptive-navigation3"] + # Grouping Android Architecture Releated Components room = ["room-ktx", "room-testing"] lifecycle = ["lifecycle-runtime", "lifecycle-viewmodel"]