浏览代码

Created new item form fragment and screen for different types of form items depending upon the user selected item

Khubaib 10 月之前
父节点
当前提交
8100f3df4a
共有 19 个文件被更改,包括 341 次插入50 次删除
  1. 1 0
      app/src/main/java/com/fastest/pass/MainActivity.kt
  2. 19 0
      app/src/main/java/com/fastest/pass/home/di/NewItemFormModule.kt
  3. 1 0
      app/src/main/java/com/fastest/pass/home/domain/model/AddNewItem.kt
  4. 13 6
      app/src/main/java/com/fastest/pass/home/presentation/ui/components/AddNewItemCard.kt
  5. 36 27
      app/src/main/java/com/fastest/pass/home/presentation/ui/components/AddNewItemsScreen.kt
  6. 3 3
      app/src/main/java/com/fastest/pass/home/presentation/ui/components/HomeScreen.kt
  7. 98 0
      app/src/main/java/com/fastest/pass/home/presentation/ui/components/NewItemFormScreen.kt
  8. 32 5
      app/src/main/java/com/fastest/pass/home/presentation/ui/fragment/AddNewItemsFragment.kt
  9. 70 0
      app/src/main/java/com/fastest/pass/home/presentation/ui/fragment/NewItemFormFragment.kt
  10. 7 0
      app/src/main/java/com/fastest/pass/home/presentation/viewmodels/AddNewItemsViewModel.kt
  11. 14 0
      app/src/main/java/com/fastest/pass/home/presentation/viewmodels/NewItemFormViewModel.kt
  12. 7 0
      app/src/main/java/com/fastest/pass/home/utils/AddNewItemsNavigation.kt
  13. 1 0
      app/src/main/java/com/fastest/pass/home/utils/AddNewItemsRoute.kt
  14. 23 0
      app/src/main/java/com/fastest/pass/home/utils/NewItemFormNavigation.kt
  15. 7 0
      app/src/main/java/com/fastest/pass/home/utils/NewItemFormRoute.kt
  16. 0 6
      app/src/main/java/com/fastest/pass/security/presentation/ui/fragment/SecurityFragment.kt
  17. 2 2
      app/src/main/java/com/fastest/pass/welcome/presentation/ui/component/WelcomeScreen.kt
  18. 5 0
      app/src/main/res/navigation/nav_graph.xml
  19. 2 1
      app/src/main/res/values/strings.xml

+ 1 - 0
app/src/main/java/com/fastest/pass/MainActivity.kt

@@ -2,6 +2,7 @@ package com.fastest.pass
 
 
 import android.app.AlertDialog
 import android.app.AlertDialog
 import android.os.Bundle
 import android.os.Bundle
+import android.util.Log
 import androidx.activity.enableEdgeToEdge
 import androidx.activity.enableEdgeToEdge
 import androidx.fragment.app.FragmentActivity
 import androidx.fragment.app.FragmentActivity
 import androidx.navigation.NavController
 import androidx.navigation.NavController

+ 19 - 0
app/src/main/java/com/fastest/pass/home/di/NewItemFormModule.kt

@@ -0,0 +1,19 @@
+package com.fastest.pass.home.di
+
+import com.fastest.pass.home.utils.NewItemFormNavigation
+import dagger.Module
+import dagger.Provides
+import dagger.hilt.InstallIn
+import dagger.hilt.components.SingletonComponent
+import javax.inject.Singleton
+
+@Module
+@InstallIn(SingletonComponent::class)
+object NewItemFormModule {
+
+    @Provides
+    @Singleton
+    fun provideNavigation() : NewItemFormNavigation {
+        return NewItemFormNavigation()
+    }
+}

+ 1 - 0
app/src/main/java/com/fastest/pass/home/domain/model/AddNewItem.kt

@@ -1,6 +1,7 @@
 package com.fastest.pass.home.domain.model
 package com.fastest.pass.home.domain.model
 
 
 data class AddNewItem(
 data class AddNewItem(
+    val id: String,
     val name: String,
     val name: String,
     val icon: Int
     val icon: Int
 )
 )

+ 13 - 6
app/src/main/java/com/fastest/pass/home/presentation/ui/components/AddNewItemCard.kt

@@ -1,5 +1,6 @@
 package com.fastest.pass.home.presentation.ui.components
 package com.fastest.pass.home.presentation.ui.components
 
 
+import android.util.Log
 import androidx.compose.foundation.BorderStroke
 import androidx.compose.foundation.BorderStroke
 import androidx.compose.foundation.Image
 import androidx.compose.foundation.Image
 import androidx.compose.foundation.background
 import androidx.compose.foundation.background
@@ -16,22 +17,24 @@ import androidx.compose.foundation.shape.RoundedCornerShape
 import androidx.compose.material3.MaterialTheme
 import androidx.compose.material3.MaterialTheme
 import androidx.compose.material3.Text
 import androidx.compose.material3.Text
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.Composable
+import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.remember
+import androidx.compose.runtime.setValue
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.draw.clip
 import androidx.compose.ui.draw.clip
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.graphics.ColorFilter
-import androidx.compose.ui.graphics.RectangleShape
+import androidx.compose.ui.platform.LocalContext
 import androidx.compose.ui.res.colorResource
 import androidx.compose.ui.res.colorResource
 import androidx.compose.ui.res.painterResource
 import androidx.compose.ui.res.painterResource
 import androidx.compose.ui.text.style.TextAlign
 import androidx.compose.ui.text.style.TextAlign
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.unit.dp
-import androidx.compose.ui.unit.sp
 import com.fastest.pass.R
 import com.fastest.pass.R
 import com.fastest.pass.home.domain.model.AddNewItem
 import com.fastest.pass.home.domain.model.AddNewItem
 
 
 @Composable
 @Composable
-fun AddNewItemCard(item: AddNewItem) {
+fun AddNewItemCard(item: AddNewItem, clickType: (ClickTypeAddNewItem) -> Unit) {
     Column(
     Column(
         modifier = Modifier
         modifier = Modifier
             .padding(top = 15.dp)
             .padding(top = 15.dp)
@@ -48,12 +51,16 @@ fun AddNewItemCard(item: AddNewItem) {
                 )
                 )
                 .clip(RoundedCornerShape(25.dp))
                 .clip(RoundedCornerShape(25.dp))
                 .background(Color.Transparent)
                 .background(Color.Transparent)
-                .padding(28.dp)
+                .clickable {
+                    clickType.invoke(ClickTypeAddNewItem.valueOf(item.id))
+                }
         ) {
         ) {
             Image(
             Image(
                 painter = painterResource(id = item.icon),
                 painter = painterResource(id = item.icon),
                 contentDescription = item.name,
                 contentDescription = item.name,
-                modifier = Modifier.size(48.dp),
+                modifier = Modifier
+                    .padding(28.dp)
+                    .size(48.dp)
             )
             )
         }
         }
         Spacer(modifier = Modifier.height(8.dp))
         Spacer(modifier = Modifier.height(8.dp))

+ 36 - 27
app/src/main/java/com/fastest/pass/home/presentation/ui/components/AddNewItemsScreen.kt

@@ -43,7 +43,13 @@ import com.fastest.pass.home.domain.model.AddNewItem
 import com.fastest.pass.login.presentation.ui.components.ClickType
 import com.fastest.pass.login.presentation.ui.components.ClickType
 
 
 enum class ClickTypeAddNewItem {
 enum class ClickTypeAddNewItem {
-    GOTO_HOME
+    GOTO_HOME,
+    Password,
+    Bank,
+    Payment,
+    Wifi,
+    Note,
+    Contact
 }
 }
 
 
 @Composable
 @Composable
@@ -69,13 +75,14 @@ fun AddNewItemsScreen(clickType: (ClickTypeAddNewItem) -> Unit) {
         Spacer(modifier = Modifier.height(20.dp))
         Spacer(modifier = Modifier.height(20.dp))
         GapLineANI()
         GapLineANI()
         Spacer(modifier = Modifier.height(0.dp))
         Spacer(modifier = Modifier.height(0.dp))
-        AddNewItemList()
+        AddNewItemList() { itemName ->
+            clickType(itemName)
         }
         }
+    }
 }
 }
 
 
 @Composable
 @Composable
 fun ColumnScope.ShowAddNewItemsHeader(text: String, clickType: (ClickTypeAddNewItem) -> Unit) {
 fun ColumnScope.ShowAddNewItemsHeader(text: String, clickType: (ClickTypeAddNewItem) -> Unit) {
-    val c = LocalContext.current
     Row(
     Row(
         modifier = Modifier
         modifier = Modifier
             .align(Alignment.Start)
             .align(Alignment.Start)
@@ -127,31 +134,16 @@ fun GapLineANI() {
 }
 }
 
 
 @Composable
 @Composable
-fun AddNewItemList() {
+fun AddNewItemList(clickType: (ClickTypeAddNewItem) -> Unit) {
     val itemList by remember {
     val itemList by remember {
         mutableStateOf(
         mutableStateOf(
             listOf(
             listOf(
-                AddNewItem("Passwords", R.drawable.password_lock),
-                AddNewItem("Bank Account", R.drawable.bank),
-                AddNewItem("Payment Card", R.drawable.cards),
-                AddNewItem("Wi-Fi Password", R.drawable.wifi),
-                AddNewItem("Secure Note", R.drawable.secure_note),
-                AddNewItem("Contact Info", R.drawable.contact_info)
-
-//                AddNewItem("Email Account", R.drawable.email_account),
-//                AddNewItem("Driver's License", R.drawable.driver_license),
-//                AddNewItem("Passport", R.drawable.passport),
-//                AddNewItem("Social Security Number", R.drawable.social_security_num),
-//                AddNewItem("Address", R.drawable.address),
-//                AddNewItem("Database", R.drawable.database),
-//                AddNewItem("Server", R.drawable.server),
-//                AddNewItem("Software License", R.drawable.software_license),
-//                AddNewItem("Membership", R.drawable.membership),
-//                AddNewItem("Health Insurance", R.drawable.health_insurance),
-//                AddNewItem("Insurance Policy", R.drawable.insurance_policy),
-//                AddNewItem("Instant Messenger", R.drawable.messenger),
-//                AddNewItem("SSH Key", R.drawable.ssh_key),
-//                AddNewItem("Folders", R.drawable.folders),
+                AddNewItem("Password","Passwords", R.drawable.password_lock),
+                AddNewItem("Bank","Bank Account", R.drawable.bank),
+                AddNewItem("Payment","Payment Card", R.drawable.cards),
+                AddNewItem("Wifi","Wi-Fi Password", R.drawable.wifi),
+                AddNewItem("Note","Secure Note", R.drawable.secure_note),
+                AddNewItem("Contact","Contact Info", R.drawable.contact_info)
             )
             )
         )
         )
     }
     }
@@ -169,9 +161,26 @@ fun AddNewItemList() {
             contentPadding = PaddingValues(6.dp)
             contentPadding = PaddingValues(6.dp)
         ) {
         ) {
             items(itemList) { item ->
             items(itemList) { item ->
-                AddNewItemCard(item = item)
+                AddNewItemCard(item = item) { itemName ->
+                    clickType(itemName)
+                }
             }
             }
         }
         }
     }
     }
 
 
-}
+}
+
+//                AddNewItem("Email Account", R.drawable.email_account),
+//                AddNewItem("Driver's License", R.drawable.driver_license),
+//                AddNewItem("Passport", R.drawable.passport),
+//                AddNewItem("Social Security Number", R.drawable.social_security_num),
+//                AddNewItem("Address", R.drawable.address),
+//                AddNewItem("Database", R.drawable.database),
+//                AddNewItem("Server", R.drawable.server),
+//                AddNewItem("Software License", R.drawable.software_license),
+//                AddNewItem("Membership", R.drawable.membership),
+//                AddNewItem("Health Insurance", R.drawable.health_insurance),
+//                AddNewItem("Insurance Policy", R.drawable.insurance_policy),
+//                AddNewItem("Instant Messenger", R.drawable.messenger),
+//                AddNewItem("SSH Key", R.drawable.ssh_key),
+//                AddNewItem("Folders", R.drawable.folders),

+ 3 - 3
app/src/main/java/com/fastest/pass/home/presentation/ui/components/HomeScreen.kt

@@ -83,11 +83,11 @@ fun HomeScreen(clickType: (ClickType) -> Unit) {
             Spacer(modifier = Modifier.height(5.dp))
             Spacer(modifier = Modifier.height(5.dp))
             ItemText2()
             ItemText2()
             Spacer(modifier = Modifier.height(15.dp))
             Spacer(modifier = Modifier.height(15.dp))
-            AddItemsButton(buttonText = R.string.add_items_onebyone) { clickType ->
+            AddItemsButton(buttonText = R.string.add_new_items) { clickType ->
                 clickType(clickType)
                 clickType(clickType)
             }
             }
-            Spacer(modifier = Modifier.height(15.dp))
-            AddImportButton(buttonText = R.string.import_passwords)
+//            Spacer(modifier = Modifier.height(15.dp))
+//            AddImportButton(buttonText = R.string.import_passwords)
         }
         }
 
 
 //        Column(
 //        Column(

+ 98 - 0
app/src/main/java/com/fastest/pass/home/presentation/ui/components/NewItemFormScreen.kt

@@ -0,0 +1,98 @@
+package com.fastest.pass.home.presentation.ui.components
+
+import androidx.compose.foundation.Image
+import androidx.compose.foundation.background
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.ColumnScope
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.navigationBarsPadding
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.size
+import androidx.compose.foundation.layout.statusBarsPadding
+import androidx.compose.material3.IconButton
+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.graphics.ColorFilter
+import androidx.compose.ui.res.colorResource
+import androidx.compose.ui.res.painterResource
+import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.unit.dp
+import androidx.compose.ui.unit.sp
+import com.fastest.pass.R
+
+enum class ClickTypeNewItemForm {
+    GO_BACK_ADD_NEW_ITEM
+}
+
+@Composable
+fun NewItemFormScreen(clickType: (ClickTypeNewItemForm) -> Unit) {
+    Column(
+        modifier = Modifier
+            .fillMaxSize()
+            .padding(top = 0.dp)
+            .statusBarsPadding()
+            .navigationBarsPadding()
+    ) {
+        Row(
+            modifier = Modifier
+                .fillMaxWidth()
+                .height(75.dp)
+                .background(colorResource(id = R.color.gray_splash))
+        ) { }
+
+        Spacer(modifier = Modifier.height(20.dp))
+        ShowNewItemFormHeader(text = stringResource(id = R.string.add_password)) { clickTypeNewItemForm ->
+            clickType(clickTypeNewItemForm)
+        }
+    }
+}
+
+@Composable
+fun ColumnScope.ShowNewItemFormHeader(text: String, clickType: (ClickTypeNewItemForm) -> Unit) {
+    Row(
+        modifier = Modifier
+            .align(Alignment.Start)
+            .fillMaxWidth(),
+        verticalAlignment = Alignment.CenterVertically,
+    ) {
+        IconButton(
+            onClick = {
+                clickType.invoke(ClickTypeNewItemForm.GO_BACK_ADD_NEW_ITEM)
+            },
+            modifier = Modifier
+                .padding(start = 30.dp)
+                .size(24.dp, 24.dp)
+        ) {
+            Image(
+                painter = painterResource(id = R.drawable.arrow_left),
+                contentDescription = "Arrow-Back",
+                modifier = Modifier.size(24.dp, 24.dp),
+                colorFilter = ColorFilter.tint(
+                    color = colorResource(id = R.color.gray_splash)
+                )
+            )
+        }
+        Surface(
+            modifier = Modifier
+                .padding(start = 15.dp),
+            color = colorResource(id = R.color.transparent)
+        ) {
+            Text(
+                text = text,
+                color = colorResource(id = R.color.gray_splash),
+                style = MaterialTheme.typography.displayLarge.copy(
+                    fontSize = 24.sp
+                ),
+            )
+        }
+    }
+}

+ 32 - 5
app/src/main/java/com/fastest/pass/home/presentation/ui/fragment/AddNewItemsFragment.kt

@@ -1,14 +1,17 @@
 package com.fastest.pass.home.presentation.ui.fragment
 package com.fastest.pass.home.presentation.ui.fragment
 
 
 import android.os.Bundle
 import android.os.Bundle
+import android.util.Log
 import android.view.LayoutInflater
 import android.view.LayoutInflater
 import android.view.View
 import android.view.View
 import android.view.ViewGroup
 import android.view.ViewGroup
+import android.widget.Toast
 import androidx.compose.foundation.background
 import androidx.compose.foundation.background
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.padding
 import androidx.compose.material.Scaffold
 import androidx.compose.material.Scaffold
+import androidx.compose.runtime.collectAsState
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.platform.ComposeView
 import androidx.compose.ui.platform.ComposeView
 import androidx.compose.ui.res.colorResource
 import androidx.compose.ui.res.colorResource
@@ -20,8 +23,11 @@ import com.fastest.pass.home.presentation.ui.components.ClickTypeAddNewItem
 import com.fastest.pass.home.presentation.viewmodels.AddNewItemsViewModel
 import com.fastest.pass.home.presentation.viewmodels.AddNewItemsViewModel
 import com.fastest.pass.home.utils.AddNewItemsNavigation
 import com.fastest.pass.home.utils.AddNewItemsNavigation
 import com.fastest.pass.home.utils.AddNewItemsRoute
 import com.fastest.pass.home.utils.AddNewItemsRoute
+import com.fastest.pass.login.presentation.ui.components.LoginScreen
+import com.fastest.pass.security.presentation.ui.components.SecurityScreen
 import com.fastest.pass.ui.theme.FastestPassTheme
 import com.fastest.pass.ui.theme.FastestPassTheme
 import dagger.hilt.android.AndroidEntryPoint
 import dagger.hilt.android.AndroidEntryPoint
+import kotlinx.coroutines.flow.collect
 import javax.inject.Inject
 import javax.inject.Inject
 
 
 @AndroidEntryPoint
 @AndroidEntryPoint
@@ -54,13 +60,34 @@ class AddNewItemsFragment : BaseFragment() {
                                 .background(colorResource(id = R.color.white))
                                 .background(colorResource(id = R.color.white))
                                 .padding(paddingValues.calculateBottomPadding())
                                 .padding(paddingValues.calculateBottomPadding())
                         ) {
                         ) {
-                            AddNewItemsScreen { clickTypeAddNewItem ->
-                                when (clickTypeAddNewItem) {
-                                    ClickTypeAddNewItem.GOTO_HOME -> {
-                                        viewmodel.navigateTo(AddNewItemsRoute.Go_Back_Home)
+                            AddNewItemsScreen(
+                                clickType = { clickTypeAddNewItem ->
+                                    when (clickTypeAddNewItem) {
+                                        ClickTypeAddNewItem.GOTO_HOME -> {
+                                            viewmodel.navigateTo(AddNewItemsRoute.Go_Back_Home)
+                                        }
+
+                                        ClickTypeAddNewItem.Password -> {
+                                            viewmodel.navigateTo(AddNewItemsRoute.OpenNewItemFormScreen)
+                                        }
+                                        ClickTypeAddNewItem.Bank -> {
+                                            viewmodel.navigateTo(AddNewItemsRoute.OpenNewItemFormScreen)
+                                        }
+                                        ClickTypeAddNewItem.Payment -> {
+                                            viewmodel.navigateTo(AddNewItemsRoute.OpenNewItemFormScreen)
+                                        }
+                                        ClickTypeAddNewItem.Wifi -> {
+                                            viewmodel.navigateTo(AddNewItemsRoute.OpenNewItemFormScreen)
+                                        }
+                                        ClickTypeAddNewItem.Note -> {
+                                            viewmodel.navigateTo(AddNewItemsRoute.OpenNewItemFormScreen)
+                                        }
+                                        ClickTypeAddNewItem.Contact -> {
+                                            viewmodel.navigateTo(AddNewItemsRoute.OpenNewItemFormScreen)
+                                        }
                                     }
                                     }
-                                }
                             }
                             }
+                            )
                         }
                         }
                     }
                     }
                 }
                 }

+ 70 - 0
app/src/main/java/com/fastest/pass/home/presentation/ui/fragment/NewItemFormFragment.kt

@@ -0,0 +1,70 @@
+package com.fastest.pass.home.presentation.ui.fragment
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.compose.foundation.background
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.padding
+import androidx.compose.material.Scaffold
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.platform.ComposeView
+import androidx.compose.ui.res.colorResource
+import androidx.fragment.app.viewModels
+import com.fastest.pass.BaseFragment
+import com.fastest.pass.R
+import com.fastest.pass.home.presentation.ui.components.ClickTypeNewItemForm
+import com.fastest.pass.home.presentation.ui.components.NewItemFormScreen
+import com.fastest.pass.home.presentation.viewmodels.NewItemFormViewModel
+import com.fastest.pass.home.utils.NewItemFormNavigation
+import com.fastest.pass.home.utils.NewItemFormRoute
+import com.fastest.pass.ui.theme.FastestPassTheme
+import dagger.hilt.android.AndroidEntryPoint
+import javax.inject.Inject
+
+@AndroidEntryPoint
+class NewItemFormFragment : BaseFragment() {
+
+    val viewmodel: NewItemFormViewModel by viewModels()
+
+    @Inject
+    lateinit var navigation: NewItemFormNavigation
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+        navigation.navigate(this)
+    }
+
+    override fun onCreateView(
+        inflater: LayoutInflater,
+        container: ViewGroup?,
+        savedInstanceState: Bundle?
+    ): View {
+        return ComposeView(requireActivity()).apply {
+            setContent {
+                FastestPassTheme {
+                    Scaffold(
+                        modifier = Modifier.fillMaxSize()
+                    ) { paddingValues ->
+                        Box(
+                            modifier = Modifier
+                                .fillMaxSize()
+                                .background(colorResource(id = R.color.white))
+                                .padding(paddingValues.calculateBottomPadding())
+                        ) {
+                            NewItemFormScreen { clickTypeNewItemForm ->
+                                when (clickTypeNewItemForm) {
+                                    ClickTypeNewItemForm.GO_BACK_ADD_NEW_ITEM -> {
+                                        viewmodel.navigateTo(NewItemFormRoute.GoBackAddNewItemsScreen)
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+}

+ 7 - 0
app/src/main/java/com/fastest/pass/home/presentation/viewmodels/AddNewItemsViewModel.kt

@@ -8,7 +8,14 @@ class AddNewItemsViewModel : ViewModel() {
     private val _router = MutableStateFlow<AddNewItemsRoute>(AddNewItemsRoute.OpenNoneScreen)
     private val _router = MutableStateFlow<AddNewItemsRoute>(AddNewItemsRoute.OpenNoneScreen)
     val router: MutableStateFlow<AddNewItemsRoute> = _router
     val router: MutableStateFlow<AddNewItemsRoute> = _router
 
 
+    private val _itemScreenName = MutableStateFlow<String>("test")
+    val itemScreenName: MutableStateFlow<String> = _itemScreenName
+
     fun navigateTo(addNewItemsRoute: AddNewItemsRoute) {
     fun navigateTo(addNewItemsRoute: AddNewItemsRoute) {
         _router.value = addNewItemsRoute
         _router.value = addNewItemsRoute
     }
     }
+
+    fun navigateToItemScreen(screenName: String) {
+        _itemScreenName.value = screenName
+    }
 }
 }

+ 14 - 0
app/src/main/java/com/fastest/pass/home/presentation/viewmodels/NewItemFormViewModel.kt

@@ -0,0 +1,14 @@
+package com.fastest.pass.home.presentation.viewmodels
+
+import androidx.lifecycle.ViewModel
+import com.fastest.pass.home.utils.NewItemFormRoute
+import kotlinx.coroutines.flow.MutableStateFlow
+
+class NewItemFormViewModel : ViewModel() {
+    private val _router = MutableStateFlow<NewItemFormRoute>(NewItemFormRoute.OpenNoneScreen)
+    val router: MutableStateFlow<NewItemFormRoute> = _router
+
+    fun navigateTo(newItemFormRoute: NewItemFormRoute) {
+        _router.value = newItemFormRoute
+    }
+}

+ 7 - 0
app/src/main/java/com/fastest/pass/home/utils/AddNewItemsNavigation.kt

@@ -1,7 +1,9 @@
 package com.fastest.pass.home.utils
 package com.fastest.pass.home.utils
 
 
+import android.util.Log
 import androidx.lifecycle.lifecycleScope
 import androidx.lifecycle.lifecycleScope
 import androidx.navigation.fragment.findNavController
 import androidx.navigation.fragment.findNavController
+import com.fastest.pass.R
 import com.fastest.pass.home.presentation.ui.fragment.AddNewItemsFragment
 import com.fastest.pass.home.presentation.ui.fragment.AddNewItemsFragment
 
 
 class AddNewItemsNavigation {
 class AddNewItemsNavigation {
@@ -12,8 +14,13 @@ class AddNewItemsNavigation {
                     AddNewItemsRoute.Go_Back_Home -> {
                     AddNewItemsRoute.Go_Back_Home -> {
                         addNewItemsFragment.findNavController().popBackStack()
                         addNewItemsFragment.findNavController().popBackStack()
                     }
                     }
+                    AddNewItemsRoute.OpenNewItemFormScreen -> {
+                        addNewItemsFragment.findNavController().navigate(R.id.newItemFormFragment)
+                    }
                     AddNewItemsRoute.OpenNoneScreen -> {}
                     AddNewItemsRoute.OpenNoneScreen -> {}
                 }
                 }
+
+                addNewItemsFragment.viewmodel.navigateTo(AddNewItemsRoute.OpenNoneScreen)
             }
             }
         }
         }
     }
     }

+ 1 - 0
app/src/main/java/com/fastest/pass/home/utils/AddNewItemsRoute.kt

@@ -2,5 +2,6 @@ package com.fastest.pass.home.utils
 
 
 sealed class AddNewItemsRoute {
 sealed class AddNewItemsRoute {
     data object Go_Back_Home : AddNewItemsRoute()
     data object Go_Back_Home : AddNewItemsRoute()
+    data object OpenNewItemFormScreen : AddNewItemsRoute()
     data object OpenNoneScreen : AddNewItemsRoute()
     data object OpenNoneScreen : AddNewItemsRoute()
 }
 }

+ 23 - 0
app/src/main/java/com/fastest/pass/home/utils/NewItemFormNavigation.kt

@@ -0,0 +1,23 @@
+package com.fastest.pass.home.utils
+
+import androidx.lifecycle.lifecycleScope
+import androidx.navigation.fragment.findNavController
+import com.fastest.pass.R
+import com.fastest.pass.home.presentation.ui.fragment.NewItemFormFragment
+
+class NewItemFormNavigation {
+
+    fun navigate(newItemFormFragment: NewItemFormFragment) {
+        newItemFormFragment.lifecycleScope.launchWhenStarted {
+            newItemFormFragment.viewmodel.router.collect { router ->
+                when (router) {
+                    NewItemFormRoute.GoBackAddNewItemsScreen -> {
+                        newItemFormFragment.findNavController().popBackStack()
+                    }
+                    NewItemFormRoute.GoBackHomeScreen -> {}
+                    NewItemFormRoute.OpenNoneScreen -> {}
+                }
+            }
+        }
+    }
+}

+ 7 - 0
app/src/main/java/com/fastest/pass/home/utils/NewItemFormRoute.kt

@@ -0,0 +1,7 @@
+package com.fastest.pass.home.utils
+
+sealed class NewItemFormRoute {
+    data object GoBackAddNewItemsScreen : NewItemFormRoute()
+    data object GoBackHomeScreen : NewItemFormRoute()
+    data object OpenNoneScreen : NewItemFormRoute()
+}

+ 0 - 6
app/src/main/java/com/fastest/pass/security/presentation/ui/fragment/SecurityFragment.kt

@@ -9,20 +9,14 @@ import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.padding
 import androidx.compose.material.Scaffold
 import androidx.compose.material.Scaffold
-import androidx.compose.material.Text
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.platform.ComposeView
 import androidx.compose.ui.platform.ComposeView
 import androidx.compose.ui.res.colorResource
 import androidx.compose.ui.res.colorResource
-import androidx.fragment.app.viewModels
 import com.fastest.pass.BaseFragment
 import com.fastest.pass.BaseFragment
 import com.fastest.pass.R
 import com.fastest.pass.R
-import com.fastest.pass.home.presentation.ui.components.ClickType
-import com.fastest.pass.home.presentation.ui.components.HomeScreen
-import com.fastest.pass.home.utils.HomeRoute
 import com.fastest.pass.security.presentation.ui.components.SecurityScreen
 import com.fastest.pass.security.presentation.ui.components.SecurityScreen
 import com.fastest.pass.ui.theme.FastestPassTheme
 import com.fastest.pass.ui.theme.FastestPassTheme
 import dagger.hilt.android.AndroidEntryPoint
 import dagger.hilt.android.AndroidEntryPoint
-import javax.inject.Inject
 
 
 @AndroidEntryPoint
 @AndroidEntryPoint
 class SecurityFragment : BaseFragment() {
 class SecurityFragment : BaseFragment() {

+ 2 - 2
app/src/main/java/com/fastest/pass/welcome/presentation/ui/component/WelcomeScreen.kt

@@ -46,9 +46,9 @@ fun WelcomeTutorial(onClick: (ClickType) -> Unit) {
 
 
     val pages = listOf(
     val pages = listOf(
         Welcome(
         Welcome(
-            "Welcome to LockMyPass",
+            "Welcome to FastestPass",
             R.drawable.welcome_1,
             R.drawable.welcome_1,
-            "LockMyPass securely stores, synchronizes, \nand manages your passwords and personal \ndata across all your devices.",
+            "FastestPass securely stores, synchronizes, \nand manages your passwords and personal \ndata across all your devices.",
         ),
         ),
         Welcome(
         Welcome(
             "Never forget again",
             "Never forget again",

+ 5 - 0
app/src/main/res/navigation/nav_graph.xml

@@ -60,4 +60,9 @@
         android:name="com.fastest.pass.home.presentation.ui.fragment.AddNewItemsFragment"
         android:name="com.fastest.pass.home.presentation.ui.fragment.AddNewItemsFragment"
         android:label="AddNewItemsFragment" />
         android:label="AddNewItemsFragment" />
 
 
+    <fragment
+        android:id="@+id/newItemFormFragment"
+        android:name="com.fastest.pass.home.presentation.ui.fragment.NewItemFormFragment"
+        android:label="NewItemFormFragment" />
+
 </navigation>
 </navigation>

+ 2 - 1
app/src/main/res/values/strings.xml

@@ -36,7 +36,7 @@
     <string name="search">Search</string>
     <string name="search">Search</string>
     <string name="start_adding_items">Start adding items</string>
     <string name="start_adding_items">Start adding items</string>
     <string name="safely_store_password">Safely store passwords and other items in \n FastestPass.</string>
     <string name="safely_store_password">Safely store passwords and other items in \n FastestPass.</string>
-    <string name="add_items_onebyone">Add items one-by-one</string>
+    <string name="add_items_onebyone">Add new items</string>
     <string name="import_passwords">Import passwords</string>
     <string name="import_passwords">Import passwords</string>
     <string name="add_new_items">Add New Items</string>
     <string name="add_new_items">Add New Items</string>
     <string name="upgrade_to_premium">Upgrade to premium</string>
     <string name="upgrade_to_premium">Upgrade to premium</string>
@@ -53,5 +53,6 @@
     <string name="organize_folders">Organize your folders that are shared</string>
     <string name="organize_folders">Organize your folders that are shared</string>
     <string name="security_dashboard">Security dashboard</string>
     <string name="security_dashboard">Security dashboard</string>
     <string name="keep_track_online">Keep track of your online security</string>
     <string name="keep_track_online">Keep track of your online security</string>
+    <string name="add_password">Add Password</string>
 
 
 </resources>
 </resources>