From 5e92403b93404706c48ebce3e162065e7fb99e4d Mon Sep 17 00:00:00 2001 From: Henrik Lepson Date: Sun, 26 Sep 2021 14:42:38 +0300 Subject: [PATCH] MOB-12 MOB-14 MOB-35 MOB-36 base for creating views and navigation created --- MobileAuthApp/.idea/misc.xml | 4 ++ MobileAuthApp/app/build.gradle | 8 ++- .../mobileauthapp/AuthFragment.kt | 57 +++++++++++++++ .../mobileauthapp/CanFragment.kt | 54 ++++++++++++++ .../mobileauthapp/HomeFragment.kt | 15 ++++ .../mobileauthapp/MainActivity.kt | 1 + .../mobileauthapp/PinFragment.kt | 54 ++++++++++++++ .../mobileauthapp/UserFragment.kt | 55 +++++++++++++++ .../mobileauthapp/model/SmartCardViewModel.kt | 50 +++++++++++++ .../app/src/main/res/layout/fragment_auth.xml | 40 +++++++++++ .../app/src/main/res/layout/fragment_can.xml | 49 +++++++++++++ .../app/src/main/res/layout/fragment_home.xml | 27 +++++-- .../app/src/main/res/layout/fragment_pin.xml | 49 +++++++++++++ .../app/src/main/res/layout/fragment_user.xml | 70 +++++++++++++++++++ .../app/src/main/res/navigation/nav_graph.xml | 63 ++++++++++++++++- .../app/src/main/res/values-night/themes.xml | 8 +-- .../app/src/main/res/values/colors.xml | 7 ++ .../app/src/main/res/values/strings.xml | 21 +++++- .../app/src/main/res/values/themes.xml | 8 +-- MobileAuthApp/build.gradle | 1 + 20 files changed, 623 insertions(+), 18 deletions(-) create mode 100644 MobileAuthApp/app/src/main/java/com/tarkvaraprojekt/mobileauthapp/AuthFragment.kt create mode 100644 MobileAuthApp/app/src/main/java/com/tarkvaraprojekt/mobileauthapp/CanFragment.kt create mode 100644 MobileAuthApp/app/src/main/java/com/tarkvaraprojekt/mobileauthapp/PinFragment.kt create mode 100644 MobileAuthApp/app/src/main/java/com/tarkvaraprojekt/mobileauthapp/UserFragment.kt create mode 100644 MobileAuthApp/app/src/main/java/com/tarkvaraprojekt/mobileauthapp/model/SmartCardViewModel.kt create mode 100644 MobileAuthApp/app/src/main/res/layout/fragment_auth.xml create mode 100644 MobileAuthApp/app/src/main/res/layout/fragment_can.xml create mode 100644 MobileAuthApp/app/src/main/res/layout/fragment_pin.xml create mode 100644 MobileAuthApp/app/src/main/res/layout/fragment_user.xml diff --git a/MobileAuthApp/.idea/misc.xml b/MobileAuthApp/.idea/misc.xml index 0ca1c4d..0921839 100644 --- a/MobileAuthApp/.idea/misc.xml +++ b/MobileAuthApp/.idea/misc.xml @@ -4,7 +4,11 @@ diff --git a/MobileAuthApp/app/build.gradle b/MobileAuthApp/app/build.gradle index 0f082ba..6584417 100644 --- a/MobileAuthApp/app/build.gradle +++ b/MobileAuthApp/app/build.gradle @@ -36,7 +36,7 @@ android { } dependencies { - + def lifecycle_version = "2.3.1" implementation 'androidx.core:core-ktx:1.6.0' implementation 'androidx.appcompat:appcompat:1.3.1' implementation 'com.google.android.material:material:1.4.0' @@ -46,7 +46,13 @@ dependencies { androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' + //To use activityViewModels + implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" + //For navigation component implementation "androidx.navigation:navigation-fragment-ktx:$nav_version" implementation "androidx.navigation:navigation-ui-ktx:$nav_version" + + //ViewModel + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version" } \ No newline at end of file diff --git a/MobileAuthApp/app/src/main/java/com/tarkvaraprojekt/mobileauthapp/AuthFragment.kt b/MobileAuthApp/app/src/main/java/com/tarkvaraprojekt/mobileauthapp/AuthFragment.kt new file mode 100644 index 0000000..5a46fe2 --- /dev/null +++ b/MobileAuthApp/app/src/main/java/com/tarkvaraprojekt/mobileauthapp/AuthFragment.kt @@ -0,0 +1,57 @@ +package com.tarkvaraprojekt.mobileauthapp + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import androidx.fragment.app.activityViewModels +import androidx.navigation.fragment.findNavController +import com.tarkvaraprojekt.mobileauthapp.databinding.FragmentAuthBinding +import com.tarkvaraprojekt.mobileauthapp.model.SmartCardViewModel + +/** + * Fragment that asks the user to detect the ID card with mobile NFC chip. + * Currently contains a next button that won't be needed later on. + * This button is just needed to test navigation between fragments so that every step exists. + */ +class AuthFragment : Fragment() { + + private val viewModel: SmartCardViewModel by activityViewModels() + + private var binding: FragmentAuthBinding? = null + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = FragmentAuthBinding.inflate(inflater, container, false) + return binding!!.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + binding!!.nextButton.setOnClickListener { goToNextFragment() } + binding!!.cancelButton.setOnClickListener { goToTheStart() } + } + + private fun goToNextFragment() { + //Dummy data for now + viewModel.setUserFirstName("John") + viewModel.setUserLastName("Doe") + viewModel.setUserIdentificationNumber("012345678910") + findNavController().navigate(R.id.action_authFragment_to_userFragment) + } + + private fun goToTheStart() { + viewModel.clearUserInfo() + findNavController().navigate(R.id.action_authFragment_to_homeFragment) + } + + override fun onDestroy() { + super.onDestroy() + binding = null + } +} \ No newline at end of file diff --git a/MobileAuthApp/app/src/main/java/com/tarkvaraprojekt/mobileauthapp/CanFragment.kt b/MobileAuthApp/app/src/main/java/com/tarkvaraprojekt/mobileauthapp/CanFragment.kt new file mode 100644 index 0000000..046112f --- /dev/null +++ b/MobileAuthApp/app/src/main/java/com/tarkvaraprojekt/mobileauthapp/CanFragment.kt @@ -0,0 +1,54 @@ +package com.tarkvaraprojekt.mobileauthapp + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import androidx.fragment.app.activityViewModels +import androidx.navigation.fragment.findNavController +import com.tarkvaraprojekt.mobileauthapp.databinding.FragmentCanBinding +import com.tarkvaraprojekt.mobileauthapp.model.SmartCardViewModel + +/** + * Fragment that deals with asking the user for six digit CAN + */ +class CanFragment : Fragment() { + + private val viewModel: SmartCardViewModel by activityViewModels() + + private var binding: FragmentCanBinding? = null + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = FragmentCanBinding.inflate(inflater, container, false) + return binding!!.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + binding!!.nextButton.setOnClickListener { goToNextFragment() } + binding!!.cancelButton.setOnClickListener { goToTheStart() } + } + + private fun goToNextFragment() { + viewModel.setUserCan( + binding!!.canEditText.text.toString() + ) + findNavController().navigate(R.id.action_canFragment_to_authFragment) + } + + private fun goToTheStart() { + viewModel.clearUserInfo() + findNavController().navigate(R.id.action_canFragment_to_homeFragment) + } + + override fun onDestroy() { + super.onDestroy() + binding = null + } +} \ No newline at end of file diff --git a/MobileAuthApp/app/src/main/java/com/tarkvaraprojekt/mobileauthapp/HomeFragment.kt b/MobileAuthApp/app/src/main/java/com/tarkvaraprojekt/mobileauthapp/HomeFragment.kt index b6a46bd..bdfaa69 100644 --- a/MobileAuthApp/app/src/main/java/com/tarkvaraprojekt/mobileauthapp/HomeFragment.kt +++ b/MobileAuthApp/app/src/main/java/com/tarkvaraprojekt/mobileauthapp/HomeFragment.kt @@ -5,10 +5,15 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment +import androidx.fragment.app.activityViewModels +import androidx.navigation.fragment.findNavController import com.tarkvaraprojekt.mobileauthapp.databinding.FragmentHomeBinding +import com.tarkvaraprojekt.mobileauthapp.model.SmartCardViewModel class HomeFragment : Fragment() { + private val viewModel: SmartCardViewModel by activityViewModels() + private var binding: FragmentHomeBinding? = null override fun onCreateView( @@ -20,6 +25,16 @@ class HomeFragment : Fragment() { return binding!!.root } + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + binding!!.beginButton.setOnClickListener { goToNextFragment() } + } + + private fun goToNextFragment() { + findNavController().navigate(R.id.action_homeFragment_to_pinFragment) + } + override fun onDestroyView() { super.onDestroyView() binding = null diff --git a/MobileAuthApp/app/src/main/java/com/tarkvaraprojekt/mobileauthapp/MainActivity.kt b/MobileAuthApp/app/src/main/java/com/tarkvaraprojekt/mobileauthapp/MainActivity.kt index 151c9bc..bb85fbc 100644 --- a/MobileAuthApp/app/src/main/java/com/tarkvaraprojekt/mobileauthapp/MainActivity.kt +++ b/MobileAuthApp/app/src/main/java/com/tarkvaraprojekt/mobileauthapp/MainActivity.kt @@ -18,4 +18,5 @@ class MainActivity : AppCompatActivity() { val navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment navigationController = navHostFragment.navController } + } \ No newline at end of file diff --git a/MobileAuthApp/app/src/main/java/com/tarkvaraprojekt/mobileauthapp/PinFragment.kt b/MobileAuthApp/app/src/main/java/com/tarkvaraprojekt/mobileauthapp/PinFragment.kt new file mode 100644 index 0000000..99c9e21 --- /dev/null +++ b/MobileAuthApp/app/src/main/java/com/tarkvaraprojekt/mobileauthapp/PinFragment.kt @@ -0,0 +1,54 @@ +package com.tarkvaraprojekt.mobileauthapp + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import androidx.fragment.app.activityViewModels +import androidx.navigation.fragment.findNavController +import com.tarkvaraprojekt.mobileauthapp.databinding.FragmentPinBinding +import com.tarkvaraprojekt.mobileauthapp.model.SmartCardViewModel + +/** + * Fragment that deals with asking the user for PIN1 + */ +class PinFragment : Fragment() { + + private val viewModel: SmartCardViewModel by activityViewModels() + + private var binding: FragmentPinBinding? = null + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = FragmentPinBinding.inflate(inflater, container, false) + return binding!!.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + binding!!.nextButton.setOnClickListener { goToNextFragment() } + binding!!.cancelButton.setOnClickListener { goToTheStart() } + } + + private fun goToNextFragment() { + viewModel.setUserPin( + binding!!.pinEditText.text.toString() + ) + findNavController().navigate(R.id.action_pinFragment_to_canFragment) + } + + private fun goToTheStart() { + viewModel.clearUserInfo() + findNavController().navigate(R.id.action_pinFragment_to_homeFragment) + } + + override fun onDestroy() { + super.onDestroy() + binding = null + } +} \ No newline at end of file diff --git a/MobileAuthApp/app/src/main/java/com/tarkvaraprojekt/mobileauthapp/UserFragment.kt b/MobileAuthApp/app/src/main/java/com/tarkvaraprojekt/mobileauthapp/UserFragment.kt new file mode 100644 index 0000000..554bbc1 --- /dev/null +++ b/MobileAuthApp/app/src/main/java/com/tarkvaraprojekt/mobileauthapp/UserFragment.kt @@ -0,0 +1,55 @@ +package com.tarkvaraprojekt.mobileauthapp + +import android.os.Bundle +import android.util.Log +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import androidx.fragment.app.activityViewModels +import androidx.navigation.fragment.findNavController +import com.tarkvaraprojekt.mobileauthapp.databinding.FragmentUserBinding +import com.tarkvaraprojekt.mobileauthapp.model.SmartCardViewModel + +/** + * Fragment that is used to display the persons name and national identification number. + * Currently needed in order to test that the app is working because the results at the moment + * are not sent to some other website or app. + */ +class UserFragment : Fragment() { + + private val TAG = UserFragment::class.java.name + + private val viewModel: SmartCardViewModel by activityViewModels() + + private var binding: FragmentUserBinding? = null + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = FragmentUserBinding.inflate(inflater, container, false) + return binding!!.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + binding!!.firstName.text = getString(R.string.info_text, "First name", viewModel.userFirstName) + binding!!.lastName.text = getString(R.string.info_text, "Last name", viewModel.userLastName) + binding!!.identificationNumber.text = getString(R.string.info_text, "Idenfitication number", viewModel.userIdentificationNumber) + binding!!.clearButton.setOnClickListener { goToTheStart() } + } + + private fun goToTheStart() { + viewModel.clearUserInfo() + Log.i(TAG, "First name value after clearUserInfo ${viewModel.userFirstName}") + findNavController().navigate(R.id.action_userFragment_to_homeFragment) + } + + override fun onDestroy() { + super.onDestroy() + binding = null + } +} \ No newline at end of file diff --git a/MobileAuthApp/app/src/main/java/com/tarkvaraprojekt/mobileauthapp/model/SmartCardViewModel.kt b/MobileAuthApp/app/src/main/java/com/tarkvaraprojekt/mobileauthapp/model/SmartCardViewModel.kt new file mode 100644 index 0000000..4674831 --- /dev/null +++ b/MobileAuthApp/app/src/main/java/com/tarkvaraprojekt/mobileauthapp/model/SmartCardViewModel.kt @@ -0,0 +1,50 @@ +package com.tarkvaraprojekt.mobileauthapp.model + +import androidx.lifecycle.ViewModel + +class SmartCardViewModel: ViewModel() { + + private var _userPin: String = "" + val userPin get() = _userPin + + private var _userCan: String = "" + val userCan get() = _userCan + + private var _userFirstName: String = "" + val userFirstName get() = _userFirstName + + private var _userLastName: String = "" + val userLastName get() = _userLastName + + private var _userIdentificationNumber: String = "" + val userIdentificationNumber get() = _userIdentificationNumber + + fun clearUserInfo() { + _userPin = "" + _userCan = "" + _userFirstName = "" + _userLastName = "" + _userIdentificationNumber = "" + } + + fun setUserPin(newUserPin: String) { + _userPin = newUserPin + } + + fun setUserCan(newUserCan: String) { + _userCan = newUserCan + } + + fun setUserFirstName(newUserFirstName: String) { + _userFirstName = newUserFirstName + } + + fun setUserLastName(newUserLastName: String) { + _userLastName = newUserLastName + } + + fun setUserIdentificationNumber(newUserIdentificationNumber: String) { + _userIdentificationNumber = newUserIdentificationNumber + } + +} \ No newline at end of file diff --git a/MobileAuthApp/app/src/main/res/layout/fragment_auth.xml b/MobileAuthApp/app/src/main/res/layout/fragment_auth.xml new file mode 100644 index 0000000..915b201 --- /dev/null +++ b/MobileAuthApp/app/src/main/res/layout/fragment_auth.xml @@ -0,0 +1,40 @@ + + + + + + +