From 19acb8ea97cdba0ca99ac44b97d9b55c6b82e7d4 Mon Sep 17 00:00:00 2001 From: posite Date: Sun, 24 Sep 2023 15:12:25 +0900 Subject: [PATCH 1/4] =?UTF-8?q?feat:=20=EB=8B=89=EB=84=A4=EC=9E=84=20?= =?UTF-8?q?=EC=9E=85=EB=A0=A5=ED=99=94=EB=A9=B4,=20=EC=83=9D=EB=85=84?= =?UTF-8?q?=EC=9B=94=EC=9D=BC=20=EC=9E=85=EB=A0=A5=ED=99=94=EB=A9=B4,=20?= =?UTF-8?q?=EA=B0=80=EC=A1=B1=20=EA=B7=B8=EB=A3=B9=EB=AA=85=20=EC=9E=85?= =?UTF-8?q?=EB=A0=A5=ED=99=94=EB=A9=B4,=20=EA=B0=80=EC=A1=B1=EC=97=B0?= =?UTF-8?q?=EA=B2=B0=20=ED=99=94=EB=A9=B4,=20=EC=B4=88=EB=8C=80=ED=95=98?= =?UTF-8?q?=EA=B8=B0=20=ED=99=94=EB=A9=B4,=20=EC=95=BD=EA=B4=80=EB=8F=99?= =?UTF-8?q?=EC=9D=98=20=ED=99=94=EB=A9=B4=20UI=EA=B5=AC=EC=84=B1=20#9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/owori/android/auth/ui/TextViewExt.kt | 13 + .../auth/ui/view/AgreeAutoLoginFragment.kt | 26 + .../android/auth/ui/view/PolicyFragment.kt | 291 +++++- .../auth/ui/viewmodel/PolicyViewModel.kt | 124 ++- app/src/main/res/drawable/arrow_back.xml | 5 + app/src/main/res/drawable/arrow_next.xml | 5 + app/src/main/res/drawable/close.png | Bin 0 -> 311 bytes .../main/res/drawable/color_check_button.xml | 9 + app/src/main/res/drawable/dot.png | Bin 0 -> 288 bytes app/src/main/res/drawable/family_code.png | Bin 0 -> 11178 bytes app/src/main/res/drawable/focused_agree.png | Bin 0 -> 632 bytes .../main/res/drawable/focused_birthdate.png | Bin 0 -> 610 bytes app/src/main/res/drawable/focused_connect.png | Bin 0 -> 634 bytes app/src/main/res/drawable/focused_group.png | Bin 0 -> 617 bytes .../main/res/drawable/focused_nickname.png | Bin 0 -> 517 bytes .../input_code_explain_background.xml | 12 + .../res/drawable/make_code_background.xml | 11 + app/src/main/res/drawable/navigation_line.xml | 7 + app/src/main/res/drawable/no_background.xml | 11 + .../res/drawable/received_code_background.xml | 14 + .../main/res/drawable/ripple_check_button.xml | 7 + .../main/res/drawable/round_bottomsheet.xml | 8 + .../res/drawable/share_code_background.xml | 11 + app/src/main/res/drawable/share_pricture.png | Bin 0 -> 9606 bytes app/src/main/res/drawable/unfocused_agree.png | Bin 0 -> 708 bytes .../main/res/drawable/unfocused_birthdate.png | Bin 0 -> 708 bytes .../main/res/drawable/unfocused_connect.png | Bin 0 -> 731 bytes app/src/main/res/drawable/unfocused_group.png | Bin 0 -> 691 bytes .../main/res/drawable/unfocused_nickname.png | Bin 0 -> 635 bytes .../res/layout/fragment_agree_auto_login.xml | 71 ++ app/src/main/res/layout/fragment_policy.xml | 830 +++++++++++++++++- app/src/main/res/values/colors.xml | 7 + app/src/main/res/values/strings.xml | 38 + app/src/main/res/values/themes.xml | 15 +- 34 files changed, 1502 insertions(+), 13 deletions(-) create mode 100644 app/src/main/java/com/owori/android/auth/ui/view/AgreeAutoLoginFragment.kt create mode 100644 app/src/main/res/drawable/arrow_back.xml create mode 100644 app/src/main/res/drawable/arrow_next.xml create mode 100644 app/src/main/res/drawable/close.png create mode 100644 app/src/main/res/drawable/color_check_button.xml create mode 100644 app/src/main/res/drawable/dot.png create mode 100644 app/src/main/res/drawable/family_code.png create mode 100644 app/src/main/res/drawable/focused_agree.png create mode 100644 app/src/main/res/drawable/focused_birthdate.png create mode 100644 app/src/main/res/drawable/focused_connect.png create mode 100644 app/src/main/res/drawable/focused_group.png create mode 100644 app/src/main/res/drawable/focused_nickname.png create mode 100644 app/src/main/res/drawable/input_code_explain_background.xml create mode 100644 app/src/main/res/drawable/make_code_background.xml create mode 100644 app/src/main/res/drawable/navigation_line.xml create mode 100644 app/src/main/res/drawable/no_background.xml create mode 100644 app/src/main/res/drawable/received_code_background.xml create mode 100644 app/src/main/res/drawable/ripple_check_button.xml create mode 100644 app/src/main/res/drawable/round_bottomsheet.xml create mode 100644 app/src/main/res/drawable/share_code_background.xml create mode 100644 app/src/main/res/drawable/share_pricture.png create mode 100644 app/src/main/res/drawable/unfocused_agree.png create mode 100644 app/src/main/res/drawable/unfocused_birthdate.png create mode 100644 app/src/main/res/drawable/unfocused_connect.png create mode 100644 app/src/main/res/drawable/unfocused_group.png create mode 100644 app/src/main/res/drawable/unfocused_nickname.png create mode 100644 app/src/main/res/layout/fragment_agree_auto_login.xml diff --git a/app/src/main/java/com/owori/android/auth/ui/TextViewExt.kt b/app/src/main/java/com/owori/android/auth/ui/TextViewExt.kt index e3c8b93..8dfbcbb 100644 --- a/app/src/main/java/com/owori/android/auth/ui/TextViewExt.kt +++ b/app/src/main/java/com/owori/android/auth/ui/TextViewExt.kt @@ -26,3 +26,16 @@ 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) + } + ) + } +} + diff --git a/app/src/main/java/com/owori/android/auth/ui/view/AgreeAutoLoginFragment.kt b/app/src/main/java/com/owori/android/auth/ui/view/AgreeAutoLoginFragment.kt new file mode 100644 index 0000000..30e6781 --- /dev/null +++ b/app/src/main/java/com/owori/android/auth/ui/view/AgreeAutoLoginFragment.kt @@ -0,0 +1,26 @@ +package com.owori.android.auth.ui.view + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import com.google.android.material.bottomsheet.BottomSheetDialogFragment +import com.owori.android.R +import com.owori.android.databinding.FragmentAgreeAutoLoginBinding + + +class AgreeAutoLoginFragment: BottomSheetDialogFragment() { + + private lateinit var binding: FragmentAgreeAutoLoginBinding + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + // Inflate the layout for this fragment + binding = FragmentAgreeAutoLoginBinding.inflate(inflater, container, false) + return binding.root + } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/owori/android/auth/ui/view/PolicyFragment.kt b/app/src/main/java/com/owori/android/auth/ui/view/PolicyFragment.kt index b3bee27..680276b 100644 --- a/app/src/main/java/com/owori/android/auth/ui/view/PolicyFragment.kt +++ b/app/src/main/java/com/owori/android/auth/ui/view/PolicyFragment.kt @@ -1,5 +1,23 @@ package com.owori.android.auth.ui.view +import android.content.Intent +import android.net.Uri +import android.text.Editable +import android.text.SpannableStringBuilder +import android.text.Spanned +import android.text.TextWatcher +import android.text.style.ForegroundColorSpan +import android.util.Log +import android.view.Menu +import android.view.MenuInflater +import android.view.MenuItem +import android.view.View +import android.widget.TextView +import androidx.activity.addCallback +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.core.view.MenuHost +import androidx.core.view.MenuProvider import com.owori.android.R import com.owori.android.databinding.FragmentPolicyBinding import com.owori.android.auth.ui.viewmodel.PolicyViewModel @@ -9,9 +27,276 @@ import org.koin.android.ext.android.inject class PolicyFragment : BaseFragment(R.layout.fragment_policy) { override val viewModel: PolicyViewModel by inject() - override fun setBindingVariables() {} - override fun initView() {} + override fun setBindingVariables() { + with(binding) { + vm = viewModel + } + } + + override fun initView() { + initTextWatcher() + initShareCodeExplain() + } + + override fun initObserver() { + with(viewModel) { + nickName.observe(viewLifecycleOwner) { + Log.d("nickname", it) + if(it.isEmpty()) { + setButtonEnableFalse() + } else { + setButtonEnableTrue() + } + } + birthDate.observe(viewLifecycleOwner) { + val verify = it.split("-") + if(verify.size == 3) { + if(verify[0].length == 4 && verify[1].length == 2 && verify[2].length == 2) { + setButtonEnableTrue() + } else { + setButtonEnableFalse() + } + } else { + setButtonEnableFalse() + } + } + + finishPolicy.observe(viewLifecycleOwner) { + val bottomSheetFragment = AgreeAutoLoginFragment() + bottomSheetFragment.show(parentFragmentManager, bottomSheetFragment.tag) + } + returnLogin.observe(viewLifecycleOwner) { + Log.d("뒤로가기", "1번에서 뒤로가기 눌림") + } + indexBack.observe(viewLifecycleOwner) { +// binding.viewpagerButton.isEnabled = true + + setFrameVisibility() + setCurrentFragment() + } + indexForward.observe(viewLifecycleOwner) { + binding.viewpagerButton.isEnabled = false + setFrameVisibility() + setCurrentFragment() + } + groupName.observe(viewLifecycleOwner) { + if(it.isEmpty()) { + setButtonEnableFalse() + } else { + setButtonEnableTrue() + } + } + shareCode.observe(viewLifecycleOwner) { + + } + groupCode.observe(viewLifecycleOwner) { + if(it.isEmpty()) { + setButtonEnableFalse() + } else { + setButtonEnableTrue() + } + } + checkedAll.observe(viewLifecycleOwner) { + setButtonEnableTrue() + val bottomSheetFragment = AgreeAutoLoginFragment() + bottomSheetFragment.show(parentFragmentManager, bottomSheetFragment.tag) + } + notChecked.observe(viewLifecycleOwner) { + setButtonEnableFalse() + } + serviceClicked.observe(viewLifecycleOwner) { + val intent = Intent(Intent.ACTION_VIEW, Uri.parse(resources.getString(R.string.service_page))) + startActivity(intent) + } + personalInfoClicked.observe(viewLifecycleOwner) { + val intent = Intent(Intent.ACTION_VIEW, Uri.parse(resources.getString(R.string.personal_info_page))) + startActivity(intent) + } + } + } + + private fun setCurrentFragment() { + Log.d("currentIndex", viewModel.currentIndex.value.toString()) + Log.d("lastIndex", viewModel.lastIndex.value.toString()) + binding.indicatorLayout.visibility = View.VISIBLE + binding.backButton.visibility = View.VISIBLE + when (viewModel.currentIndex.value) { + 0 -> { + binding.nicknameFrame.visibility = View.VISIBLE + if(!viewModel.nickName.value.isNullOrEmpty()) { + setButtonEnableTrue() + } else { + setButtonEnableFalse() + } + } + 1 -> { + binding.birthdateFrame.visibility = View.VISIBLE + val verify = viewModel.birthDate.value?.split("-") + if(verify?.size == 3) { + if(verify[0].length == 4 && verify[1].length == 2 && verify[2].length == 2){ + setButtonEnableTrue() + } else { + setButtonEnableFalse() + } + } else { + setButtonEnableFalse() + } + binding.viewpagerButton.visibility = View.VISIBLE + } + 2 -> { + binding.familyConnectFrame.visibility = View.VISIBLE + binding.viewpagerButton.visibility = View.INVISIBLE + } + 3 -> { + binding.groupFrame.visibility = View.VISIBLE + binding.viewpagerButton.visibility = View.VISIBLE + if(!viewModel.groupName.value.isNullOrEmpty()) { + setButtonEnableTrue() + } else { + setButtonEnableFalse() + } + } + 4 -> { + binding.shareCodeFrame.visibility = View.VISIBLE + binding.indicatorLayout.visibility = View.GONE + binding.backButton.visibility = View.GONE + binding.closeButton.visibility = View.VISIBLE + setButtonEnableTrue() + } + 5 -> { + if(!viewModel.groupCode.value.isNullOrEmpty()) { + setButtonEnableTrue() + } else { + setButtonEnableFalse() + } + binding.indicatorLayout.visibility = View.GONE + binding.backButton.visibility = View.GONE + binding.closeButton.visibility = View.VISIBLE + binding.viewpagerButton.visibility = View.VISIBLE + binding.inputCodeFrame.visibility = View.VISIBLE + binding.inputCodeExplainFrame.visibility = View.VISIBLE + } + 6 -> { + if(viewModel.serviceChecked.value == true && viewModel.personalInfoChecked.value == true) { + setButtonEnableTrue() + } else { + setButtonEnableFalse() + } + setButtonEnableFalse() + binding.agreeServiceConditionFrame.visibility = View.VISIBLE + } + } + } + + private fun initTextWatcher() { + binding.birthdateEt.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + } + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + var textlength = 0 + if(binding.birthdateEt.isFocusable() && !s.toString().equals("")) { + try{ + textlength = binding.birthdateEt.text.toString().length + }catch (e: NumberFormatException){ + e.printStackTrace() + return + } + if (textlength == 4 && before != 1) { + val date = binding.birthdateEt.text.toString()+"-" + binding.birthdateEt.setText(date) + binding.birthdateEt.setSelection(binding.birthdateEt.text.length) + + }else if (textlength == 7&& before != 1){ + val date = binding.birthdateEt.text.toString()+"-" + binding.birthdateEt.setText(date) + binding.birthdateEt.setSelection(binding.birthdateEt.text.length) + + }else if(textlength == 5 && !binding.birthdateEt.text.toString().contains("-") && !binding.birthdateEt.text.toString().substring(0,4).contains('-')){ + val date = binding.birthdateEt.text.toString().substring(0,4)+"-"+binding.birthdateEt.text.toString().substring(4) + binding.birthdateEt.setText(date) + binding.birthdateEt.setSelection(binding.birthdateEt.text.length) + + }else if(textlength == 8 && binding.birthdateEt.text.toString().substring(7,8) != "-" && !binding.birthdateEt.text.toString().substring(0,4).contains('-') + && !binding.birthdateEt.text.toString().substring(5,8).contains('-') && !binding.birthdateEt.text.toString().substring(5).contains('-')){ + val date = binding.birthdateEt.text.toString().substring(0,7)+"-"+binding.birthdateEt.text.toString().substring(7) + binding.birthdateEt.setText(date) + binding.birthdateEt.setSelection(binding.birthdateEt.text.length) + + } + } + + } + + override fun afterTextChanged(s: Editable?) { + } + + }) + } + private fun initCustomOnBackPressed() { + requireActivity().onBackPressedDispatcher.addCallback(this) { + viewModel.onClickBackButton() + } + } + + private fun setFrameVisibility() { + binding.closeButton.visibility = View.GONE + binding.nicknameFrame.visibility = View.GONE + binding.birthdateFrame.visibility = View.GONE + binding.familyConnectFrame.visibility = View.GONE + binding.groupFrame.visibility = View.GONE + binding.shareCodeFrame.visibility = View.GONE + binding.inputCodeFrame.visibility = View.GONE + binding.inputCodeExplainFrame.visibility = View.GONE + binding.agreeServiceConditionFrame.visibility = View.GONE + } + + private fun setButtonEnableTrue() { + binding.viewpagerButton.isEnabled = true + binding.viewpagerButton.setTextColor(ContextCompat.getColor(requireContext(), R.color.white)) + } + + private fun setButtonEnableFalse() { + binding.viewpagerButton.isEnabled = false + binding.viewpagerButton.setTextColor(ContextCompat.getColor(requireContext(), R.color.grey_909090)) + } + + + + private fun initShareCodeExplain() { + val builder = SpannableStringBuilder(binding.shareCodeExplain.text.toString()) + val color9090Span1 = ForegroundColorSpan(ContextCompat.getColor(requireContext(), R.color.grey_909090)) + val color9090Span2 = ForegroundColorSpan(ContextCompat.getColor(requireContext(), R.color.grey_909090)) + builder.setSpan(color9090Span1, 12, 19, Spanned.SPAN_INCLUSIVE_INCLUSIVE) + builder.setSpan(color9090Span2, 48, 70, Spanned.SPAN_INCLUSIVE_INCLUSIVE) + binding.shareCodeExplain.text = builder + } + + private fun setInputGroupCodeResult(result: Int) { + when(result) { + 0 -> { + binding.inputCodeResult.text = resources.getString(R.string.input_code_success) + binding.inputCodeResult.setTextColor(ContextCompat.getColor(requireContext(), R.color.blue_1C86FF)) + } + 1-> { + binding.inputCodeResult.text = resources.getString(R.string.input_code_wrong) + binding.inputCodeResult.setTextColor(ContextCompat.getColor(requireContext(), R.color.red_FF3F3F)) + } + 2 -> { + binding.inputCodeResult.text = resources.getString(R.string.input_code_late) + binding.inputCodeResult.setTextColor(ContextCompat.getColor(requireContext(), R.color.red_FF3F3F)) + } + else -> { + binding.inputCodeResult.text = resources.getString(R.string.input_code_wrong) + binding.inputCodeResult.setTextColor(ContextCompat.getColor(requireContext(), R.color.red_FF3F3F)) + } + } + + } + + + private fun registerOnPageChangeCallback() { + + } - override fun initObserver() {} } \ No newline at end of file diff --git a/app/src/main/java/com/owori/android/auth/ui/viewmodel/PolicyViewModel.kt b/app/src/main/java/com/owori/android/auth/ui/viewmodel/PolicyViewModel.kt index de1487d..e2b744f 100644 --- a/app/src/main/java/com/owori/android/auth/ui/viewmodel/PolicyViewModel.kt +++ b/app/src/main/java/com/owori/android/auth/ui/viewmodel/PolicyViewModel.kt @@ -1,5 +1,127 @@ package com.owori.android.auth.ui.viewmodel +import android.util.Log +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import com.owori.android.common.SingleLiveEvent import com.owori.android.common.ui.viewmodel.BaseViewModel -class PolicyViewModel : BaseViewModel() {} \ No newline at end of file +class PolicyViewModel : BaseViewModel() { + private val _currentIndex: MutableLiveData = MutableLiveData(0) + val currentIndex: LiveData = _currentIndex + private val _finishPolicy: SingleLiveEvent = SingleLiveEvent() + val finishPolicy: LiveData = _finishPolicy + private val _returnLogin: SingleLiveEvent = SingleLiveEvent() + val returnLogin: LiveData = _returnLogin + private val _indexBack: SingleLiveEvent = SingleLiveEvent() + val indexBack: LiveData = _indexBack + private val _indexForward: SingleLiveEvent = SingleLiveEvent() + val indexForward: LiveData = _indexForward + private val _shareCode: SingleLiveEvent = SingleLiveEvent() + val shareCode: LiveData = _shareCode + private val _checkedAll: SingleLiveEvent = SingleLiveEvent() + val checkedAll: LiveData = _checkedAll + private val _notChecked: SingleLiveEvent = SingleLiveEvent() + val notChecked: LiveData = _notChecked + private val _personalInfoClicked: SingleLiveEvent = SingleLiveEvent() + val personalInfoClicked: LiveData = _personalInfoClicked + private val _serviceClicked: SingleLiveEvent = SingleLiveEvent() + val serviceClicked: LiveData = _serviceClicked + + val _nickName: MutableLiveData = MutableLiveData() + val nickName: LiveData = _nickName + val _birthDate: MutableLiveData = MutableLiveData("") + val birthDate: LiveData = _birthDate + val _groupName: MutableLiveData = MutableLiveData("") + val groupName: LiveData = _groupName + val _groupCode: MutableLiveData = MutableLiveData("") + val groupCode: LiveData = _groupCode + val _serviceChecked: MutableLiveData = MutableLiveData(false) + val serviceChecked: LiveData = _serviceChecked + val _personalInfoChecked: MutableLiveData = MutableLiveData(false) + val personalInfoChecked: LiveData = _personalInfoChecked + + private var _lastIndex : MutableLiveData = MutableLiveData(0) + val lastIndex = _lastIndex + + fun onClickCheckButton() { + _currentIndex.value?.let { _index -> + when (_index) { + in 4..5 -> { + _currentIndex.value = LAST_PAGE + _lastIndex.value = _index + if(personalInfoChecked.value == true && serviceChecked.value == true) { + _checkedAll.call() + } + _indexForward.call() + } + LAST_PAGE -> { + _finishPolicy.call() + } + else -> { + _lastIndex.value = _index + _currentIndex.value = _currentIndex.value?.plus(1) + _indexForward.call() + } + } + } + } + + fun onClickBackButton() { + _currentIndex.value?.let { _index -> + if (_index == 0) _returnLogin.call() + else { + _currentIndex.value = lastIndex.value + if(_lastIndex.value == 5) { + _lastIndex.value = 2 + } else { + _lastIndex.value = _lastIndex.value?.minus(1) + } + _indexBack.call() + } + } + } + + fun onClickReceivedCodeButton() { + _currentIndex.value?.let { _index -> + _lastIndex.value = 2 + _currentIndex.value = 5 + _indexForward.call() + } + } + + fun onClickMakeCodeButton() { + _lastIndex.value = 2 + _currentIndex.value = 3 + _indexForward.call() + } + + fun onClickShareCodeButton() { + _shareCode.call() + } + + fun onClickCheckBox() { + if(personalInfoChecked.value == true && serviceChecked.value == true) { + _checkedAll.call() + } else { + + } + } + + fun onClickService() { + _serviceClicked.call() + } + + fun onClickPersonalInfo() { + _personalInfoClicked.call() + } + + fun setCurrentItemIndex(index: Int) { + _currentIndex.value = index + } + + companion object { + private const val LAST_PAGE = 6 + } + +} \ No newline at end of file diff --git a/app/src/main/res/drawable/arrow_back.xml b/app/src/main/res/drawable/arrow_back.xml new file mode 100644 index 0000000..14180d9 --- /dev/null +++ b/app/src/main/res/drawable/arrow_back.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/arrow_next.xml b/app/src/main/res/drawable/arrow_next.xml new file mode 100644 index 0000000..7709483 --- /dev/null +++ b/app/src/main/res/drawable/arrow_next.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/close.png b/app/src/main/res/drawable/close.png new file mode 100644 index 0000000000000000000000000000000000000000..a4dfab927409e81a30a10ef244197421517731d9 GIT binary patch literal 311 zcmeAS@N?(olHy`uVBq!ia0vp^{2``W z$lZxy-8q?;Kn_c~qpu?a!^VE@KZ&eB{uxgf$B+uf-bsvthYWaJXKT!8@w_2YP;A8B z(Cm4DQGt;)VkV17&Y$?Gbv;||?tgvv)|0Q@)iwL^Ny(taMdDFQgiVa6>VN)q2Q8n(j{JtJ7dIxBZV!IzZug&ekJh@z2?ABAKz}iKy85}Sb4q9e E08RvQiU0rr literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/color_check_button.xml b/app/src/main/res/drawable/color_check_button.xml new file mode 100644 index 0000000..846f880 --- /dev/null +++ b/app/src/main/res/drawable/color_check_button.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/dot.png b/app/src/main/res/drawable/dot.png new file mode 100644 index 0000000000000000000000000000000000000000..73aa0d5fec4cad70bb36472d4315d04b7ee5a955 GIT binary patch literal 288 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 IM6N<$f*rDV$^ZZW literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/focused_agree.png b/app/src/main/res/drawable/focused_agree.png new file mode 100644 index 0000000000000000000000000000000000000000..6e4bc22d1a6d94946a59150df742c2a00ae0a94a GIT binary patch literal 632 zcmV-;0*C#HP)(3F^apy8GeokzPK40K8HubD z1-$9|X0sNzlTr0F3OMMgM@+OV+W-|J=GcF+u~rJ+iJPJ7>n{=vaXux+H;v)$=>ni5 z;VO?#2(=2eFnGBc9D(~!?ygP>>Mue>M>p1xTFSxiQ*sH0Bo+esEiD-5noc@E^c!jY=6nS#tLn`Um zjsm+~s9OslS!bP}Wn*wsglj5)QH4pfbD;WF2gS@~cn?;fwDie(hG^9m(ODf}qQ(07*LEi4_(dghXwwS!lI4fAGMhWRMB zA()5%_%-}z??BS6i46rm;ssX&6_oB|{ykS-FGNYElc*U&=J&`>~w zDB}((DdHlR$DP-c-Mw>OIzOVzCt2QI&-^?d?|y^=N!0QOsWUGbLOs1ogut!~Vm*!- z_%QI)Y9s2#mgOaJ{U zP9h3jz2O6*;+XV(`*_aGImk{ArNt1gaDJldi07K%OE-||FQ`z!s3`+=?kqrkc?(H4 zs^iVsuMd5PtgN?(ikTUI>Ojrs%i3R%f5Bc=U{{H(GN@GuzIAVSzj@zYMzXn%^v$C} zs&PKD_BcEsl}=VyD%A&sqHZFYEaQwMpryvEZftkO)O6OV^Al@OZKj(bd#eG3SGif w4~IizQX@YJY;mStdhhGR6>m#@JPFLT4?3XC5EdPCP5=M^07*qoM6N<$f*;uucmMzZ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/focused_connect.png b/app/src/main/res/drawable/focused_connect.png new file mode 100644 index 0000000000000000000000000000000000000000..564a43285089c00c37cdd26fe15c51d80cc79778 GIT binary patch literal 634 zcmV-=0)_pFP)k*I|hR*SX8MU4#wCYBabNumWyp@~#SqCFN`7%}%3DAX3v z5K6YDVGE8Qcl&mjdBQ-gaP8XQSWBn4CfHZ_5mV<_M9P+ zbwU8k-N3BX;#N|2AIpGQhu$&btZeI0A!Lq&&wm!2;DfjkQrG(@hap@{i3!Zq>FDti zprvpsPDg~QLQfbx+o<=!-4D;_M}+p_of_%40n`-8leS%MoV*Kk`;lGeTmON#H(mBL zXq!ob4n-~(J&eGge&5?nT(xUGbEtk)qu0KNIOB5Rt$ScrzS>Ate7FyE=P~5#tBy+; z`BLy9;$V+L`M+a6khm|WN7*b~C8<-!9pr!9k z&sF+Kd*5ZyiqI5rx?`)s{QcEGb0{Gq*l;=g7jMCP`l<(#A1PGQ0rC-DVBavW5nyAG zBa_#+CHCZ*-D}j@&qWthyKWinctWoF2OpOGWyG9tr_UxdalbP(v_{0lNx)Z3TpcGu_ z=;O;6f#;!GspNENterKn*-B6UF>p#~^x#pXL+WIngf=)$m(;#oTn+Zj_w&F)#~j7k U8Yo6Yvj6}907*qoM6N<$g2`MZvH$=8 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/focused_group.png b/app/src/main/res/drawable/focused_group.png new file mode 100644 index 0000000000000000000000000000000000000000..9e02b5c94f88afa4021db85cc85f51bd3f917341 GIT binary patch literal 617 zcmV-v0+#)WP)4ZBfMJQV?xfqKM5i!$|4Az}`l7a!VV!T-XRuZGsDEc%#Ck#=-*^!0QC&_cM% zSEqy;`IazvvE}W9hfi-VO$ptH4_sxw4alTGZrZ97rLF|P+4D%(KLXo-%Z|lPUpH(F zRB*gD3gn%GHUBUh@GKl z{w_4b3~XMVYTcX)F0on|`Sh^SKM_y1#6D?4r`v;?6cmDU?L4~`5_k#KiY2GZGySAP zoo+n3QR-{v^{`Z6Ov=>x=+9IVxG8}>=Z}7K6qxHj64cT?L@m{|00000NkvXXu0mjf D3*r{Q literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/focused_nickname.png b/app/src/main/res/drawable/focused_nickname.png new file mode 100644 index 0000000000000000000000000000000000000000..55c8c91c48bc5b4369aecbd9785ff2a4af311c3d GIT binary patch literal 517 zcmV+g0{Z=lP)RAYZ_^IMdywgTz4l z`n*>u0WAg6`k(q<-~D>MclSqFAnDZ2Ak-Q%0-Kk+h+xJ05mMc;5-FD)L^ zfZ>?VBw~}7CM*$3>F77l?M(2OQ@1G4dc0}Ddh&!WYO~p60nk)9CA&GHN|we9*{qvW zaBz9l$_bsq#|Ejp0aPX6FAbK4m|H-5HIT18kp4&3Nnam|Y6-?<|Lu)=X$L1j`-cD< zn-C7(IW!Y&jtn{_4Y84R3OQ4(ZbNu?4l4`ME^)(Kn31vi?eM+@>xd9`D4D2&WfA<7 zNX8H!#sRUdX8QiS`7W00000NkvXX Hu0mjf{wCc< literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/input_code_explain_background.xml b/app/src/main/res/drawable/input_code_explain_background.xml new file mode 100644 index 0000000..7af3c8e --- /dev/null +++ b/app/src/main/res/drawable/input_code_explain_background.xml @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/make_code_background.xml b/app/src/main/res/drawable/make_code_background.xml new file mode 100644 index 0000000..8a8f9fd --- /dev/null +++ b/app/src/main/res/drawable/make_code_background.xml @@ -0,0 +1,11 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/navigation_line.xml b/app/src/main/res/drawable/navigation_line.xml new file mode 100644 index 0000000..317fe1e --- /dev/null +++ b/app/src/main/res/drawable/navigation_line.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/no_background.xml b/app/src/main/res/drawable/no_background.xml new file mode 100644 index 0000000..71bc3f6 --- /dev/null +++ b/app/src/main/res/drawable/no_background.xml @@ -0,0 +1,11 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/received_code_background.xml b/app/src/main/res/drawable/received_code_background.xml new file mode 100644 index 0000000..ed52708 --- /dev/null +++ b/app/src/main/res/drawable/received_code_background.xml @@ -0,0 +1,14 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ripple_check_button.xml b/app/src/main/res/drawable/ripple_check_button.xml new file mode 100644 index 0000000..d638a07 --- /dev/null +++ b/app/src/main/res/drawable/ripple_check_button.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/round_bottomsheet.xml b/app/src/main/res/drawable/round_bottomsheet.xml new file mode 100644 index 0000000..fb23872 --- /dev/null +++ b/app/src/main/res/drawable/round_bottomsheet.xml @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/share_code_background.xml b/app/src/main/res/drawable/share_code_background.xml new file mode 100644 index 0000000..34ff801 --- /dev/null +++ b/app/src/main/res/drawable/share_code_background.xml @@ -0,0 +1,11 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/share_pricture.png b/app/src/main/res/drawable/share_pricture.png new file mode 100644 index 0000000000000000000000000000000000000000..e07baab67cb86945453d0adcabd13716a0d951c4 GIT binary patch literal 9606 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/unfocused_agree.png b/app/src/main/res/drawable/unfocused_agree.png new file mode 100644 index 0000000000000000000000000000000000000000..941d7e88faede1d31704aa7db9bc908b9e3bad8e GIT binary patch literal 708 zcmV;#0z3VQP)df?!d%2477Uc~ z0&ch4f3SRHs%rTiAqKHv@CSduiEvBshMKw$uY_8iuEYA~(1Z6TAEu825z{j&SYg@Vjjt%|?8Y>a$9 zuZ=^-*x2+{VX241A@I4|>JGrKSZa_Q$B_ds2XHc(Xd4JVB29|T=0(-fPuLBZ-0gO$ z)9FZf&<+6y8N>O6YmaYiI4RwhQp-oZgXA^{9PiFx(^&Amzi0woNdVMAm&>Juav2`k zMrDm@zu!Oc!Es%RzAMBaTQF+1S_3B%jI23*8`jtB^|YD$Wr`TYf}!qT89lq4#Y?#u zJ^Ul6D*>F(=NF>~6eaKlE45m!22X^Q61tLqRiwJp+licn{675bsZyydybNEk%AQ-e q4wHhPkmqO0g2lb9^TZ4lguk_KI=cw2}H zYR+GDNk^+q`$N%}s`~oWsZ)Oo@=&wcOol?C2O&hAAAfQ)oi6)$Jlcj~{NHRgZzSYhs|hN`MfJYPI@w70ghR0Zl}gPNyl8$w;V9 z+wGP{qY;hAW4Q``w%pN+b0{~nSS)%1&$U{usNe77Lto&A8la%1Qpqo(tJLb_ZSz8#kAuFg8_2B;FR1O z!CPB zP$>AS9Dq^SzM!ZYU2ffSj=Bx-J5JAcP%J+lk4v9G^Ah@CQg>`NZyfP2z;!1MegF-J zL)jptqEe|`jK#_kF`Q30_V~eulk_?ue&rkxINrU%rm^66|4^IPQu3W}IsxT0Jh6?+ z9Mf*Md*+MnxD?$g%t5qZ)M~W`ZX_5{bNCjluiNe36geWr9Lxnnz5inL>~bbAQ0WuPsXn)gZ>lZ;000016 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/unfocused_connect.png b/app/src/main/res/drawable/unfocused_connect.png new file mode 100644 index 0000000000000000000000000000000000000000..7facc1d0c8038fbb1ec3fc456fc559f09376ec26 GIT binary patch literal 731 zcmV<10wn#3P)B;J{F?l zBXur)#hBZjePJJkV@5lc7-PRtQn&jwe-1hj&>67#-5CCeC$9@^)76>}t zjloT0!F&Hu2!0{K(fvqq7a-*@+;bb1F{a&a_rQbWb}9NU-~+YbsMTr>Oe8T>vwRz^ z5Bch+T&EO1@CAq3f7j@_%UOJsbE8LU`IY)?Hajnse*!_kb*lGtxIv^d6M=G+Bc|u1APPgB-Vwvb>mKH7J{HI)P;Dr^M@1h zlH=uvLyk%2JCm8o$eD-g_4-pF5P0L9m+0p!J`oqTx7>ve|PRFcb=X z>~_0Pf<6U%t6+jk0@UGMB9UOpWKu(IS}vEY-|w^G zaHvl~znx?6`8kvxnayTBf#;gdW~|%o;zK8JVKx|OE|uRstuGuO zo|;%bBG|wd3`+PXUbq{AKg85s^welH(uqr@Qq1S`U99(dJ;Z!MA$b;lzrTdZOeS*` ziew>{NZ4kxvF?F$BvjJ7pmKSOL?Sms(CKt^m0Xi4ORDn{!15M!Fc|1Doldh`0-TsH zNS+Lb!=4*Wy(07X$aPYRTN?pIvL3A#q!xuOZHv?CRNpM*0PiMg$i9?P&!5Y^>I&dC z-5x6#hQ}ocuu_V}<8f=bK`2Mvq^Q|65Jz0ii{p?nO2|9_La|uP8X9omF*=`Euh%vD z!o+PRR|Ob#GDh9cx{iFfY6xl?6MCuQR@uD1S0*3i>8e<*RuvkQ+ojl}f(;T1 zMzL5d<3)qvH5Ijk)`uJRi0AMWHn0W5%%3!R>T;5fa%lAEA71qf;CMVfG!W`TXRVVFerSx7%$AO$z;l9sQZo(0)+jEP)VYfWvf$?9FCl8;0>YolYy3W!YZw$_p3{ zho9H$^$Vc4p-@O-v6%2oO(qio&^bE*rAqmH{_Q9jP!oVMvr8lrl1wHYsF!B5nRGfG z>GgWfSK!{-&0ZZsahU0J+821J@pvrFW|J@4gByB+hGsIElc5ynGKR5au#{VHtyX*G z=QC4X%X7pS#*%>rf8m94OYp;*x`Uo#O<7OY-S6eCR*Q3nn0t2<2n33Jm`bI5q3w2C zy4|iUmrIGq7>!1KCo@wnP&S*DzofS%_IdFJVDngAImX2~RfHp% zdoG?CiA3aDa+5R-`6m&~jV;%b+v+yKbuP}eL?3ZX3T9K$D}SlTVa9YmW3gC#;tfOB zOpXdJcC_7TO0FsfOk;?PkAA;@QP!i;$mvWZ`Gy3X8q0h>f5*voT}sXsW7y7Q6bgkB zFB~wlMx$7?zDA>QR_4r=m|91I3qqbHOl@C0jBtJM-F z(n^J0iC>lI?$kSoXD&J(ePHZ8m&*-z8J=LB{c5!;(xm7ovhy>=Q3v!Jz^_A~)-SFx V7&i&L9Y6p8002ovPDHLkV1lCo6FC3? literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/fragment_agree_auto_login.xml b/app/src/main/res/layout/fragment_agree_auto_login.xml new file mode 100644 index 0000000..110a853 --- /dev/null +++ b/app/src/main/res/layout/fragment_agree_auto_login.xml @@ -0,0 +1,71 @@ + + + + + + + +