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