diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 9a29d6e4..d71aa566 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,8 +136,19 @@ android { buildFeatures { viewBinding = true buildConfig = true + compose = true } } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + } + kotlinOptions { + jvmTarget = "11" + } + buildFeatures { + compose = true + } ksp { val location = "$projectDir/schemas" @@ -145,6 +157,17 @@ android { } 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.bundles.compose.debug) + + // Navigation 3 + implementation(libs.bundles.navigation3) + // Standard Kotlin Libraries implementation(libs.kotlin.stdlib) @@ -155,6 +178,7 @@ dependencies { // Data/Persistence (Room Bundle) implementation(libs.bundles.room) + debugImplementation(libs.androidx.ui.test.manifest) ksp(libs.room.compiler) // Networking/Parsing @@ -168,7 +192,7 @@ dependencies { implementation(libs.bundles.lifecycle) // Dependency Injection - implementation(libs.koin) + implementation(libs.bundles.koin) // --- Testing --- @@ -177,8 +201,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/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2c896861..fc3da90e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -17,22 +17,26 @@ tools:targetApi="33"> + android:exported="true" + android:theme="@style/PasscodesTheme.Default"> - - - - - - - - - + + + + + + + + + + + android:permission="android.permission.BIND_AUTOFILL_SERVICE"> @@ -59,4 +63,4 @@ - + \ No newline at end of file diff --git a/app/src/main/kotlin/com/jeeldobariya/passcodes/di/appModule.kt b/app/src/main/kotlin/com/jeeldobariya/passcodes/di/appModule.kt index 04dc71b1..65f10a1c 100644 --- a/app/src/main/kotlin/com/jeeldobariya/passcodes/di/appModule.kt +++ b/app/src/main/kotlin/com/jeeldobariya/passcodes/di/appModule.kt @@ -1,9 +1,9 @@ package com.jeeldobariya.passcodes.di -import com.jeeldobariya.passcodes.ui.LoadPasswordViewModel -import com.jeeldobariya.passcodes.ui.SavePasswordViewModel -import com.jeeldobariya.passcodes.ui.UpdatePasswordViewModel -import com.jeeldobariya.passcodes.ui.ViewPasswordViewModel +import com.jeeldobariya.passcodes.oldui.LoadPasswordViewModel +import com.jeeldobariya.passcodes.oldui.SavePasswordViewModel +import com.jeeldobariya.passcodes.oldui.UpdatePasswordViewModel +import com.jeeldobariya.passcodes.oldui.ViewPasswordViewModel import com.jeeldobariya.passcodes.utils.Controller import org.koin.android.ext.koin.androidContext import org.koin.core.module.dsl.viewModel 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/ui/ui/theme/Color.kt b/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/ui/theme/Color.kt new file mode 100644 index 00000000..4ed93138 --- /dev/null +++ b/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/ui/theme/Color.kt @@ -0,0 +1,11 @@ +package com.jeeldobariya.passcodes.ui.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/ui/ui/theme/Theme.kt b/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/ui/theme/Theme.kt new file mode 100644 index 00000000..047c32fc --- /dev/null +++ b/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/ui/theme/Theme.kt @@ -0,0 +1,57 @@ +package com.jeeldobariya.passcodes.ui.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/ui/ui/theme/Type.kt b/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/ui/theme/Type.kt new file mode 100644 index 00000000..f456b139 --- /dev/null +++ b/app/src/main/kotlin/com/jeeldobariya/passcodes/ui/ui/theme/Type.kt @@ -0,0 +1,34 @@ +package com.jeeldobariya.passcodes.ui.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/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">