diff --git a/app/src/main/java/com/isolaatti/settings/data/remote/AccountSettingsApi.kt b/app/src/main/java/com/isolaatti/settings/data/remote/AccountSettingsApi.kt new file mode 100644 index 0000000..94c70f2 --- /dev/null +++ b/app/src/main/java/com/isolaatti/settings/data/remote/AccountSettingsApi.kt @@ -0,0 +1,4 @@ +package com.isolaatti.settings.data.remote + +interface AccountSettingsApi { +} \ No newline at end of file diff --git a/app/src/main/java/com/isolaatti/settings/data/repository/AccountSettingsRepositoryImpl.kt b/app/src/main/java/com/isolaatti/settings/data/repository/AccountSettingsRepositoryImpl.kt new file mode 100644 index 0000000..338504b --- /dev/null +++ b/app/src/main/java/com/isolaatti/settings/data/repository/AccountSettingsRepositoryImpl.kt @@ -0,0 +1,6 @@ +package com.isolaatti.settings.data.repository + +import com.isolaatti.settings.domain.AccountSettingsRepository + +class AccountSettingsRepositoryImpl : AccountSettingsRepository { +} \ No newline at end of file diff --git a/app/src/main/java/com/isolaatti/settings/domain/AccountSettingsRepository.kt b/app/src/main/java/com/isolaatti/settings/domain/AccountSettingsRepository.kt new file mode 100644 index 0000000..a929bfa --- /dev/null +++ b/app/src/main/java/com/isolaatti/settings/domain/AccountSettingsRepository.kt @@ -0,0 +1,5 @@ +package com.isolaatti.settings.domain + +interface AccountSettingsRepository { + +} \ No newline at end of file diff --git a/app/src/main/java/com/isolaatti/settings/presentation/ChangePasswordViewModel.kt b/app/src/main/java/com/isolaatti/settings/presentation/ChangePasswordViewModel.kt new file mode 100644 index 0000000..9c14d29 --- /dev/null +++ b/app/src/main/java/com/isolaatti/settings/presentation/ChangePasswordViewModel.kt @@ -0,0 +1,6 @@ +package com.isolaatti.settings.presentation + +import androidx.lifecycle.ViewModel + +class ChangePasswordViewModel : ViewModel() { +} \ No newline at end of file diff --git a/app/src/main/java/com/isolaatti/settings/ui/AccountSettingsFragment.kt b/app/src/main/java/com/isolaatti/settings/ui/AccountSettingsFragment.kt index 07c4cbc..80de1fa 100644 --- a/app/src/main/java/com/isolaatti/settings/ui/AccountSettingsFragment.kt +++ b/app/src/main/java/com/isolaatti/settings/ui/AccountSettingsFragment.kt @@ -5,6 +5,9 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment +import androidx.navigation.fragment.findNavController +import com.google.android.material.dialog.MaterialAlertDialogBuilder +import com.isolaatti.R import com.isolaatti.databinding.FragmentAccountSettingsBinding class AccountSettingsFragment : Fragment() { @@ -19,4 +22,35 @@ class AccountSettingsFragment : Fragment() { return binding.root } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + binding.toolbar.setNavigationOnClickListener { + findNavController().popBackStack() + } + + binding.changePasswordButton.setOnClickListener { + findNavController().navigate(AccountSettingsFragmentDirections.actionAccountSettingsFragmentToChangePasswordFragment()) + } + + binding.currentSessionButton.setOnClickListener { + findNavController().navigate(AccountSettingsFragmentDirections.actionAccountSettingsFragmentToSessionsFragment()) + } + + binding.logOutButton.setOnClickListener { + logout() + } + } + + private fun logout() { + MaterialAlertDialogBuilder(requireContext()) + .setTitle("Log out?") + .setMessage("You will be taken to log in screen...") + .setPositiveButton("Yes, log out") { _, _ -> + + } + .setNegativeButton(R.string.no, null) + .show() + } } \ No newline at end of file diff --git a/app/src/main/java/com/isolaatti/settings/ui/ChangePasswordFragment.kt b/app/src/main/java/com/isolaatti/settings/ui/ChangePasswordFragment.kt index cef955c..fe56080 100644 --- a/app/src/main/java/com/isolaatti/settings/ui/ChangePasswordFragment.kt +++ b/app/src/main/java/com/isolaatti/settings/ui/ChangePasswordFragment.kt @@ -4,18 +4,62 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.core.widget.doOnTextChanged import androidx.fragment.app.Fragment +import androidx.fragment.app.viewModels +import androidx.navigation.fragment.findNavController import com.isolaatti.databinding.FragmentSettingsChangePasswordBinding +import com.isolaatti.settings.presentation.ChangePasswordViewModel class ChangePasswordFragment : Fragment() { lateinit var viewBinding: FragmentSettingsChangePasswordBinding + + private val viewModel: ChangePasswordViewModel by viewModels() + override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { + ): View { viewBinding = FragmentSettingsChangePasswordBinding.inflate(inflater) return viewBinding.root } + + private fun flip() { + viewBinding.switcher.showPrevious() + } + + private val clickListener = View.OnClickListener { + flip() + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + setupListeners() + + viewBinding.continueCurrentPassword.isEnabled = !viewBinding.currentPasswordTextInput.editText?.text.isNullOrBlank() + } + + private fun setupListeners() { + viewBinding.toolbar.setNavigationOnClickListener { + findNavController().popBackStack() + } + viewBinding.continueCurrentPassword.setOnClickListener(clickListener) + viewBinding.prevNewPasswordButton.setOnClickListener(clickListener) + + viewBinding.currentPasswordTextInput.editText?.doOnTextChanged { text, start, before, count -> + viewBinding.continueCurrentPassword.isEnabled = !text.isNullOrBlank() + } + + viewBinding.newPasswordInputText.editText?.doOnTextChanged { text, start, before, count -> + + } + + viewBinding.newPasswordInputTextConfirm.editText?.doOnTextChanged { text, start, before, count -> + + } + } + } \ No newline at end of file diff --git a/app/src/main/res/drawable/baseline_logout_24.xml b/app/src/main/res/drawable/baseline_logout_24.xml new file mode 100644 index 0000000..bceb2ec --- /dev/null +++ b/app/src/main/res/drawable/baseline_logout_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/baseline_password_24.xml b/app/src/main/res/drawable/baseline_password_24.xml new file mode 100644 index 0000000..dca893e --- /dev/null +++ b/app/src/main/res/drawable/baseline_password_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/layout/fragment_account_settings.xml b/app/src/main/res/layout/fragment_account_settings.xml index 77d9ef6..7dd136f 100644 --- a/app/src/main/res/layout/fragment_account_settings.xml +++ b/app/src/main/res/layout/fragment_account_settings.xml @@ -1,6 +1,130 @@ + android:layout_height="match_parent" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_settings_change_password.xml b/app/src/main/res/layout/fragment_settings_change_password.xml index 70e0397..1dde3c5 100644 --- a/app/src/main/res/layout/fragment_settings_change_password.xml +++ b/app/src/main/res/layout/fragment_settings_change_password.xml @@ -1,16 +1,163 @@ - + app:layout_constraintTop_toTopOf="parent" + app:navigationIcon="@drawable/baseline_arrow_back_24" + app:title="@string/change_password"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 13a8147..98db913 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -146,4 +146,10 @@ Set how other people see you on Isolaatti. Hide or show information QR Code Squads + Current sessions + Log out + A session is what keeps your device able to connect to Isolaatti server without you entering your credential each time. + Change password + A password allows you to sign in securely. Keep this password safe. + Sessions \ No newline at end of file