diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index aaafd46..14496f4 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -18,7 +18,8 @@ android:exported="true" android:screenOrientation="portrait" android:label="@string/app_name" - android:theme="@style/Theme.Owori"> + android:theme="@style/Theme.Owori" + android:windowSoftInputMode="adjustResize"> diff --git a/app/src/main/java/com/owori/android/presenter/login/LoginFragment.kt b/app/src/main/java/com/owori/android/presenter/login/LoginFragment.kt index a8568a0..90981b6 100644 --- a/app/src/main/java/com/owori/android/presenter/login/LoginFragment.kt +++ b/app/src/main/java/com/owori/android/presenter/login/LoginFragment.kt @@ -26,11 +26,11 @@ class LoginFragment : BaseFragment(R.layou with(viewModel) { // TODO : PolicyFragment를 위해 작성한 부분이라 수정 필요. callKakaoLogin.observe(viewLifecycleOwner) { - navigateTo(R.id.action_loginFragment_to_PolicyFragment) + navigateTo(R.id.action_LoginFragment_to_nickNameFragment) } callGoogleLogin.observe(viewLifecycleOwner) { - navigateTo(R.id.action_loginFragment_to_PolicyFragment) + navigateTo(R.id.action_LoginFragment_to_nickNameFragment) } } } diff --git a/app/src/main/java/com/owori/android/presenter/policy/AgreeServiceConditionFragment.kt b/app/src/main/java/com/owori/android/presenter/policy/AgreeServiceConditionFragment.kt new file mode 100644 index 0000000..90190c0 --- /dev/null +++ b/app/src/main/java/com/owori/android/presenter/policy/AgreeServiceConditionFragment.kt @@ -0,0 +1,23 @@ +package com.owori.android.presenter.policy + +import androidx.fragment.app.viewModels +import com.owori.android.R +import com.owori.android.core.BaseFragment +import com.owori.android.databinding.FragmentAgreeServiceConditionBinding + +class AgreeServiceConditionFragment : BaseFragment(R.layout.fragment_agree_service_condition) { + override val viewModel: AgreeServiceConditionViewModel by viewModels() + override fun setBindingVariables() { + with(binding) { + vm = viewModel + } + } + + override fun initView() { + + } + + override fun initObserver() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/owori/android/presenter/policy/AgreeServiceConditionViewModel.kt b/app/src/main/java/com/owori/android/presenter/policy/AgreeServiceConditionViewModel.kt new file mode 100644 index 0000000..904d7d0 --- /dev/null +++ b/app/src/main/java/com/owori/android/presenter/policy/AgreeServiceConditionViewModel.kt @@ -0,0 +1,17 @@ +package com.owori.android.presenter.policy + +import androidx.lifecycle.LiveData +import com.owori.android.core.BaseViewModel +import com.owori.android.presenter.util.SingleLiveEvent +import dagger.hilt.android.lifecycle.HiltViewModel +import javax.inject.Inject + +@HiltViewModel +class AgreeServiceConditionViewModel @Inject constructor(): BaseViewModel() { + private val _btnNext: SingleLiveEvent = SingleLiveEvent() + val btnNext: LiveData = _btnNext + + fun onClickCheckButton() { + _btnNext.call() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/owori/android/presenter/policy/BirthDateFragment.kt b/app/src/main/java/com/owori/android/presenter/policy/BirthDateFragment.kt new file mode 100644 index 0000000..095b54e --- /dev/null +++ b/app/src/main/java/com/owori/android/presenter/policy/BirthDateFragment.kt @@ -0,0 +1,30 @@ +package com.owori.android.presenter.policy + + +import androidx.fragment.app.viewModels +import com.owori.android.R +import com.owori.android.core.BaseFragment +import com.owori.android.core.navigateTo +import com.owori.android.databinding.FragmentBirthDateBinding + + +class BirthDateFragment : BaseFragment(R.layout.fragment_birth_date) { + override val viewModel: BirthDateViewModel by viewModels() + override fun setBindingVariables() { + with(binding) { + vm = viewModel + } + } + + override fun initView() { + + } + + override fun initObserver() { + with(viewModel) { + btnNext.observe(viewLifecycleOwner) { + navigateTo(R.id.action_birthDateFragment_to_familyConnectFragment) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/owori/android/presenter/policy/BirthDateViewModel.kt b/app/src/main/java/com/owori/android/presenter/policy/BirthDateViewModel.kt new file mode 100644 index 0000000..11dd9f1 --- /dev/null +++ b/app/src/main/java/com/owori/android/presenter/policy/BirthDateViewModel.kt @@ -0,0 +1,17 @@ +package com.owori.android.presenter.policy + +import androidx.lifecycle.LiveData +import com.owori.android.core.BaseViewModel +import com.owori.android.presenter.util.SingleLiveEvent +import dagger.hilt.android.lifecycle.HiltViewModel +import javax.inject.Inject + +@HiltViewModel +class BirthDateViewModel @Inject constructor(): BaseViewModel() { + private val _btnNext: SingleLiveEvent = SingleLiveEvent() + val btnNext: LiveData = _btnNext + + fun onClickCheckButton() { + _btnNext.call() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/owori/android/presenter/policy/FamilyConnectFragment.kt b/app/src/main/java/com/owori/android/presenter/policy/FamilyConnectFragment.kt new file mode 100644 index 0000000..ee5dc4c --- /dev/null +++ b/app/src/main/java/com/owori/android/presenter/policy/FamilyConnectFragment.kt @@ -0,0 +1,33 @@ +package com.owori.android.presenter.policy + + +import androidx.fragment.app.viewModels +import com.owori.android.R +import com.owori.android.core.BaseFragment +import com.owori.android.core.navigateTo +import com.owori.android.databinding.FragmentFamilyConnectBinding + + +class FamilyConnectFragment : BaseFragment(R.layout.fragment_family_connect) { + override val viewModel: FamilyConnectViewModel by viewModels() + override fun setBindingVariables() { + with(binding) { + vm = viewModel + } + } + + override fun initView() { + + } + + override fun initObserver() { + with(viewModel) { + returnLogin.observe(viewLifecycleOwner) { + navigateTo(R.id.action_familyConnectFragment_to_inputFamilyCodeFragment) + } + btnNext.observe(viewLifecycleOwner) { + navigateTo(R.id.action_familyConnectFragment_to_groupFragment) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/owori/android/presenter/policy/FamilyConnectViewModel.kt b/app/src/main/java/com/owori/android/presenter/policy/FamilyConnectViewModel.kt new file mode 100644 index 0000000..88f2df4 --- /dev/null +++ b/app/src/main/java/com/owori/android/presenter/policy/FamilyConnectViewModel.kt @@ -0,0 +1,24 @@ +package com.owori.android.presenter.policy + +import androidx.lifecycle.LiveData +import com.owori.android.core.BaseViewModel +import com.owori.android.presenter.util.SingleLiveEvent +import dagger.hilt.android.lifecycle.HiltViewModel +import javax.inject.Inject + +@HiltViewModel +class FamilyConnectViewModel @Inject constructor(): BaseViewModel() { + + private val _btnNext: SingleLiveEvent = SingleLiveEvent() + val btnNext: LiveData = _btnNext + private val _returnLogin: SingleLiveEvent = SingleLiveEvent() + val returnLogin: LiveData = _returnLogin + + fun onClickCheckButton() { + _btnNext.call() + } + + fun onClickBackButton() { + _returnLogin.call() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/owori/android/presenter/policy/GroupFragment.kt b/app/src/main/java/com/owori/android/presenter/policy/GroupFragment.kt new file mode 100644 index 0000000..c51f86b --- /dev/null +++ b/app/src/main/java/com/owori/android/presenter/policy/GroupFragment.kt @@ -0,0 +1,30 @@ +package com.owori.android.presenter.policy + + +import androidx.fragment.app.viewModels +import com.owori.android.R +import com.owori.android.core.BaseFragment +import com.owori.android.core.navigateTo +import com.owori.android.databinding.FragmentGroupBinding + + +class GroupFragment : BaseFragment(R.layout.fragment_group) { + override val viewModel: GroupViewModel by viewModels() + override fun setBindingVariables() { + with(binding) { + vm = viewModel + } + } + + override fun initView() { + + } + + override fun initObserver() { + with(viewModel) { + btnNext.observe(viewLifecycleOwner) { + navigateTo(R.id.action_groupFragment_to_shareCodeFragment) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/owori/android/presenter/policy/GroupViewModel.kt b/app/src/main/java/com/owori/android/presenter/policy/GroupViewModel.kt new file mode 100644 index 0000000..57dbb10 --- /dev/null +++ b/app/src/main/java/com/owori/android/presenter/policy/GroupViewModel.kt @@ -0,0 +1,17 @@ +package com.owori.android.presenter.policy + +import androidx.lifecycle.LiveData +import com.owori.android.core.BaseViewModel +import com.owori.android.presenter.util.SingleLiveEvent +import dagger.hilt.android.lifecycle.HiltViewModel +import javax.inject.Inject + +@HiltViewModel +class GroupViewModel @Inject constructor(): BaseViewModel() { + private val _btnNext: SingleLiveEvent = SingleLiveEvent() + val btnNext: LiveData = _btnNext + + fun onClickCheckButton() { + _btnNext.call() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/owori/android/presenter/policy/InputFamilyCodeFragment.kt b/app/src/main/java/com/owori/android/presenter/policy/InputFamilyCodeFragment.kt new file mode 100644 index 0000000..9921dfa --- /dev/null +++ b/app/src/main/java/com/owori/android/presenter/policy/InputFamilyCodeFragment.kt @@ -0,0 +1,30 @@ +package com.owori.android.presenter.policy + + +import androidx.fragment.app.viewModels +import com.owori.android.R +import com.owori.android.core.BaseFragment +import com.owori.android.core.navigateTo +import com.owori.android.databinding.FragmentInputFamilyCodeBinding + + +class InputFamilyCodeFragment : BaseFragment(R.layout.fragment_input_family_code) { + override val viewModel: InputFamilyCodeViewModel by viewModels() + override fun setBindingVariables() { + with(binding) { + vm = viewModel + } + } + + override fun initView() { + + } + + override fun initObserver() { + with(viewModel) { + btnNext.observe(viewLifecycleOwner) { + navigateTo(R.id.action_inputFamilyCodeFragment_to_agreeServiceConditionFragment) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/owori/android/presenter/policy/InputFamilyCodeViewModel.kt b/app/src/main/java/com/owori/android/presenter/policy/InputFamilyCodeViewModel.kt new file mode 100644 index 0000000..dc3472d --- /dev/null +++ b/app/src/main/java/com/owori/android/presenter/policy/InputFamilyCodeViewModel.kt @@ -0,0 +1,17 @@ +package com.owori.android.presenter.policy + +import androidx.lifecycle.LiveData +import com.owori.android.core.BaseViewModel +import com.owori.android.presenter.util.SingleLiveEvent +import dagger.hilt.android.lifecycle.HiltViewModel +import javax.inject.Inject + +@HiltViewModel +class InputFamilyCodeViewModel @Inject constructor(): BaseViewModel() { + private val _btnNext: SingleLiveEvent = SingleLiveEvent() + val btnNext: LiveData = _btnNext + + fun onClickCheckButton() { + _btnNext.call() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/owori/android/presenter/policy/NickNameFragment.kt b/app/src/main/java/com/owori/android/presenter/policy/NickNameFragment.kt new file mode 100644 index 0000000..dfb6d16 --- /dev/null +++ b/app/src/main/java/com/owori/android/presenter/policy/NickNameFragment.kt @@ -0,0 +1,51 @@ +package com.owori.android.presenter.policy + + +import androidx.core.content.ContextCompat +import androidx.fragment.app.viewModels +import com.owori.android.R +import com.owori.android.core.BaseFragment +import com.owori.android.core.navigateTo +import com.owori.android.databinding.FragmentNickNameBinding +import dagger.hilt.android.AndroidEntryPoint + +@AndroidEntryPoint +class NickNameFragment: BaseFragment(R.layout.fragment_nick_name) { + override val viewModel: NickNameViewModel by viewModels() + override fun setBindingVariables() { + with(binding) { + vm = viewModel + } + } + + override fun initView() { + + } + + override fun initObserver() { + with(viewModel) { + nickname.observe(viewLifecycleOwner) { + setViewPagerButton(it) + } + + returnLogin.observe(viewLifecycleOwner) { + requireActivity().onBackPressedDispatcher.onBackPressed() + } + btnNext.observe(viewLifecycleOwner) { + navigateTo(R.id.action_nickNameFragment_to_birthDateFragment) + } + } + } + + fun setViewPagerButton(nickname: String) { + val isInputted = nickname.isNotEmpty() + with(binding.viewpagerButton) { + isEnabled = isInputted + if(isInputted) { + setTextColor(ContextCompat.getColor(requireContext(), R.color.white)) + } else { + setTextColor(ContextCompat.getColor(requireContext(), R.color.grey_909090)) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/owori/android/presenter/policy/NickNameViewModel.kt b/app/src/main/java/com/owori/android/presenter/policy/NickNameViewModel.kt new file mode 100644 index 0000000..cbda814 --- /dev/null +++ b/app/src/main/java/com/owori/android/presenter/policy/NickNameViewModel.kt @@ -0,0 +1,27 @@ +package com.owori.android.presenter.policy + +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import com.owori.android.core.BaseViewModel +import com.owori.android.presenter.util.SingleLiveEvent +import dagger.hilt.android.lifecycle.HiltViewModel +import javax.inject.Inject + +@HiltViewModel +class NickNameViewModel @Inject constructor(): BaseViewModel(){ + val _nickname: MutableLiveData = MutableLiveData("") + val nickname: LiveData = _nickname + + private val _returnLogin: SingleLiveEvent = SingleLiveEvent() + val returnLogin: LiveData = _returnLogin + private val _btnNext: SingleLiveEvent = SingleLiveEvent() + val btnNext: LiveData = _btnNext + + fun onClickCheckButton() { + _btnNext.call() + } + + fun onClickBackButton() { + _returnLogin.call() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/owori/android/presenter/policy/ShareCodeFragment.kt b/app/src/main/java/com/owori/android/presenter/policy/ShareCodeFragment.kt new file mode 100644 index 0000000..435a8ba --- /dev/null +++ b/app/src/main/java/com/owori/android/presenter/policy/ShareCodeFragment.kt @@ -0,0 +1,30 @@ +package com.owori.android.presenter.policy + + +import androidx.fragment.app.viewModels +import com.owori.android.R +import com.owori.android.core.BaseFragment +import com.owori.android.core.navigateTo +import com.owori.android.databinding.FragmentShareCodeBinding + + +class ShareCodeFragment : BaseFragment(R.layout.fragment_share_code) { + override val viewModel: ShareCodeViewModel by viewModels() + override fun setBindingVariables() { + with(binding) { + vm = viewModel + } + } + + override fun initView() { + + } + + override fun initObserver() { + with(viewModel) { + btnNext.observe(viewLifecycleOwner) { + navigateTo(R.id.action_shareCodeFragment_to_agreeServiceConditionFragment) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/owori/android/presenter/policy/ShareCodeViewModel.kt b/app/src/main/java/com/owori/android/presenter/policy/ShareCodeViewModel.kt new file mode 100644 index 0000000..337c4cb --- /dev/null +++ b/app/src/main/java/com/owori/android/presenter/policy/ShareCodeViewModel.kt @@ -0,0 +1,18 @@ +package com.owori.android.presenter.policy + +import androidx.lifecycle.LiveData +import com.owori.android.core.BaseViewModel +import com.owori.android.presenter.util.SingleLiveEvent +import dagger.hilt.android.lifecycle.HiltViewModel +import javax.inject.Inject + +@HiltViewModel +class ShareCodeViewModel @Inject constructor(): BaseViewModel() { + private val _btnNext: SingleLiveEvent = SingleLiveEvent() + val btnNext: LiveData = _btnNext + + + fun onClickCheckButton() { + _btnNext.call() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/owori/android/presenter/util/TextViewExtension.kt b/app/src/main/java/com/owori/android/presenter/util/TextViewExtension.kt index bdefd63..395aeb0 100644 --- a/app/src/main/java/com/owori/android/presenter/util/TextViewExtension.kt +++ b/app/src/main/java/com/owori/android/presenter/util/TextViewExtension.kt @@ -26,16 +26,10 @@ fun TextView.setSubTitleText(currentItemIndex: Int) { ) } -@BindingAdapter("setNickNameLength") -fun TextView.setNickNameLength(text: String?) { - text?.let { - setText(it.length.toString()) - setTextColor( - when (it.length) { - 0 -> context.getColor(R.color.black) - else -> context.getColor(R.color.owori_red) - } - ) - } +@BindingAdapter("setTextLength") +fun TextView.setTextLength(text: String) { + setText( + text.length.toString() + ) } diff --git a/app/src/main/res/drawable/arrow_back.xml b/app/src/main/res/drawable/arrow_back.xml index 14180d9..87a773f 100644 --- a/app/src/main/res/drawable/arrow_back.xml +++ b/app/src/main/res/drawable/arrow_back.xml @@ -2,4 +2,4 @@ android:tint="#000000" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> - + \ No newline at end of file diff --git a/app/src/main/res/drawable/check_btn_ripple.xml b/app/src/main/res/drawable/check_btn_ripple.xml new file mode 100644 index 0000000..ba659b0 --- /dev/null +++ b/app/src/main/res/drawable/check_btn_ripple.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/check_btn_selector.xml b/app/src/main/res/drawable/check_btn_selector.xml new file mode 100644 index 0000000..846f880 --- /dev/null +++ b/app/src/main/res/drawable/check_btn_selector.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/check_text_selector.xml b/app/src/main/res/drawable/check_text_selector.xml new file mode 100644 index 0000000..de50880 --- /dev/null +++ b/app/src/main/res/drawable/check_text_selector.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/focused_agree.xml b/app/src/main/res/drawable/focused_agree.xml new file mode 100644 index 0000000..3ed01c7 --- /dev/null +++ b/app/src/main/res/drawable/focused_agree.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/focused_birthdate.xml b/app/src/main/res/drawable/focused_birthdate.xml new file mode 100644 index 0000000..5eb23c5 --- /dev/null +++ b/app/src/main/res/drawable/focused_birthdate.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/focused_connect.xml b/app/src/main/res/drawable/focused_connect.xml new file mode 100644 index 0000000..f6b94e6 --- /dev/null +++ b/app/src/main/res/drawable/focused_connect.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/focused_group.xml b/app/src/main/res/drawable/focused_group.xml new file mode 100644 index 0000000..03aecc6 --- /dev/null +++ b/app/src/main/res/drawable/focused_group.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/focused_nickname.xml b/app/src/main/res/drawable/focused_nickname.xml new file mode 100644 index 0000000..fc7ea31 --- /dev/null +++ b/app/src/main/res/drawable/focused_nickname.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/unfocused_agree.xml b/app/src/main/res/drawable/unfocused_agree.xml new file mode 100644 index 0000000..caaa112 --- /dev/null +++ b/app/src/main/res/drawable/unfocused_agree.xml @@ -0,0 +1,14 @@ + + + + diff --git a/app/src/main/res/drawable/unfocused_birthdate.xml b/app/src/main/res/drawable/unfocused_birthdate.xml new file mode 100644 index 0000000..eb48e1e --- /dev/null +++ b/app/src/main/res/drawable/unfocused_birthdate.xml @@ -0,0 +1,14 @@ + + + + diff --git a/app/src/main/res/drawable/unfocused_connect.xml b/app/src/main/res/drawable/unfocused_connect.xml new file mode 100644 index 0000000..a0816c4 --- /dev/null +++ b/app/src/main/res/drawable/unfocused_connect.xml @@ -0,0 +1,14 @@ + + + + diff --git a/app/src/main/res/drawable/unfocused_group.xml b/app/src/main/res/drawable/unfocused_group.xml new file mode 100644 index 0000000..cb69f24 --- /dev/null +++ b/app/src/main/res/drawable/unfocused_group.xml @@ -0,0 +1,14 @@ + + + + diff --git a/app/src/main/res/drawable/unfocused_nickname.xml b/app/src/main/res/drawable/unfocused_nickname.xml new file mode 100644 index 0000000..cf450fd --- /dev/null +++ b/app/src/main/res/drawable/unfocused_nickname.xml @@ -0,0 +1,14 @@ + + + + diff --git a/app/src/main/res/layout/fragment_agree_service_condition.xml b/app/src/main/res/layout/fragment_agree_service_condition.xml new file mode 100644 index 0000000..10cf335 --- /dev/null +++ b/app/src/main/res/layout/fragment_agree_service_condition.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + +