From 5daddc5fef047f93e839b5d992a8d4f2ddfc3216 Mon Sep 17 00:00:00 2001 From: klaus Date: Thu, 10 Oct 2024 13:10:40 +0900 Subject: [PATCH] =?UTF-8?q?=EC=84=A4=EC=A0=95=20-=2019=EA=B8=88=20?= =?UTF-8?q?=EC=BD=98=ED=85=90=EC=B8=A0=20=EB=B3=B4=EA=B8=B0=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95=20UI=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../co/vividnext/sodalive/common/Constants.kt | 2 + .../common/SharedPreferenceManager.kt | 12 ++ .../sodalive/settings/ContentType.kt | 12 ++ .../sodalive/settings/SettingsActivity.kt | 61 ++++++++++ .../sodalive/settings/SettingsViewModel.kt | 27 +++++ .../btn_radio_select_normal.png | Bin 509 -> 1493 bytes .../btn_radio_select_selected.png | Bin 668 -> 2086 bytes app/src/main/res/layout/activity_settings.xml | 110 ++++++++++++++++++ 8 files changed, 224 insertions(+) create mode 100644 app/src/main/java/kr/co/vividnext/sodalive/settings/ContentType.kt diff --git a/app/src/main/java/kr/co/vividnext/sodalive/common/Constants.kt b/app/src/main/java/kr/co/vividnext/sodalive/common/Constants.kt index 0878264..40cff7b 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/common/Constants.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/common/Constants.kt @@ -11,7 +11,9 @@ object Constants { const val PREF_NO_CHAT_ROOM = "pref_no_chat" const val PREF_PUSH_TOKEN = "pref_push_token" const val PREF_PROFILE_IMAGE = "pref_profile_image" + const val PREF_CONTENT_PREFERENCE = "pref_content_preference" const val PREF_IS_CONTENT_PLAY_LOOP = "pref_is_content_play_loop" + const val PREF_IS_ADULT_CONTENT_VISIBLE = "pref_is_adult_content_visible" const val PREF_IS_FOLLOWED_CREATOR_LIVE = "pref_is_followed_creator_live" const val PREF_NOT_SHOWING_EVENT_POPUP_ID = "pref_not_showing_event_popup_id" const val PREF_IS_VIEWED_ON_BOARDING_TUTORIAL = "pref_is_viewed_on_boarding_tutorial" diff --git a/app/src/main/java/kr/co/vividnext/sodalive/common/SharedPreferenceManager.kt b/app/src/main/java/kr/co/vividnext/sodalive/common/SharedPreferenceManager.kt index 02ddf57..e794898 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/common/SharedPreferenceManager.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/common/SharedPreferenceManager.kt @@ -95,6 +95,18 @@ object SharedPreferenceManager { sharedPreferences[Constants.PREF_IS_ADULT] = value } + var isAdultContentVisible: Boolean + get() = sharedPreferences[Constants.PREF_IS_ADULT_CONTENT_VISIBLE, true] + set(value) { + sharedPreferences[Constants.PREF_IS_ADULT_CONTENT_VISIBLE] = value + } + + var contentPreference: Int + get() = sharedPreferences[Constants.PREF_CONTENT_PREFERENCE, 0] + set(value) { + sharedPreferences[Constants.PREF_CONTENT_PREFERENCE] = value + } + var pushToken: String get() = sharedPreferences[Constants.PREF_PUSH_TOKEN, ""] set(value) { diff --git a/app/src/main/java/kr/co/vividnext/sodalive/settings/ContentType.kt b/app/src/main/java/kr/co/vividnext/sodalive/settings/ContentType.kt new file mode 100644 index 0000000..1012ac6 --- /dev/null +++ b/app/src/main/java/kr/co/vividnext/sodalive/settings/ContentType.kt @@ -0,0 +1,12 @@ +package kr.co.vividnext.sodalive.settings + +enum class ContentType { + // 전체 + ALL, + + // 남성향 + MALE, + + // 여성향 + FEMALE +} diff --git a/app/src/main/java/kr/co/vividnext/sodalive/settings/SettingsActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/settings/SettingsActivity.kt index 556dad2..184a417 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/settings/SettingsActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/settings/SettingsActivity.kt @@ -4,10 +4,12 @@ import android.annotation.SuppressLint import android.content.Intent import android.graphics.Paint import android.os.Bundle +import android.view.View import android.widget.Toast import androidx.activity.viewModels import com.google.android.gms.oss.licenses.OssLicensesMenuActivity import kr.co.vividnext.sodalive.BuildConfig +import kr.co.vividnext.sodalive.R import kr.co.vividnext.sodalive.audio_content.AudioContentPlayService import kr.co.vividnext.sodalive.base.BaseActivity import kr.co.vividnext.sodalive.base.SodaDialog @@ -126,6 +128,42 @@ class SettingsActivity : BaseActivity(ActivitySettingsB binding.tvSignOut.setOnClickListener { startActivity(Intent(applicationContext, SignOutActivity::class.java)) } + + setupAdultContentVisibleView() + } + + private fun setupAdultContentVisibleView() { + // 본인 인증 체크 + if (SharedPreferenceManager.isAuth) { + binding.llAdultContentVisible.visibility = View.VISIBLE + + // 19금 콘텐츠 보기 체크 + if (SharedPreferenceManager.isAdultContentVisible) { + binding.llAdultContentPreference.visibility = View.VISIBLE + + } else { + binding.llAdultContentPreference.visibility = View.GONE + } + + // 19금 콘텐츠 보기 스위치 액션 + binding.ivAdultContentVisible.setOnClickListener { + viewModel.toggleAdultContentVisible() + } + + binding.tvContentAll.setOnClickListener { + viewModel.setAdultContentPreference(ContentType.ALL) + } + + binding.tvContentMale.setOnClickListener { + viewModel.setAdultContentPreference(ContentType.MALE) + } + + binding.tvContentFemale.setOnClickListener { + viewModel.setAdultContentPreference(ContentType.FEMALE) + } + } else { + binding.llAdultContentVisible.visibility = View.GONE + } } private fun bindData() { @@ -140,6 +178,29 @@ class SettingsActivity : BaseActivity(ActivitySettingsB viewModel.toastLiveData.observe(this) { it?.let { Toast.makeText(applicationContext, it, Toast.LENGTH_LONG).show() } } + + viewModel.isAdultContentVisible.observe(this) { + if (it) { + binding.ivAdultContentVisible.setImageResource(R.drawable.btn_toggle_on_big) + binding.llAdultContentPreference.visibility = View.VISIBLE + } else { + binding.ivAdultContentVisible.setImageResource(R.drawable.btn_toggle_off_big) + binding.llAdultContentPreference.visibility = View.GONE + } + } + + viewModel.adultContentPreference.observe(this) { + binding.tvContentAll.isSelected = false + binding.tvContentMale.isSelected = false + binding.tvContentFemale.isSelected = false + + when (it) { + ContentType.ALL -> binding.tvContentAll.isSelected = true + ContentType.MALE -> binding.tvContentMale.isSelected = true + ContentType.FEMALE -> binding.tvContentFemale.isSelected = true + else -> {} + } + } } private fun logout() { diff --git a/app/src/main/java/kr/co/vividnext/sodalive/settings/SettingsViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/settings/SettingsViewModel.kt index f98a3b6..cdedf91 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/settings/SettingsViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/settings/SettingsViewModel.kt @@ -18,6 +18,20 @@ class SettingsViewModel(private val userRepository: UserRepository) : BaseViewMo val isLoading: LiveData get() = _isLoading + private var _isAdultContentVisible = MutableLiveData( + SharedPreferenceManager.isAdultContentVisible + ) + val isAdultContentVisible: LiveData + get() = _isAdultContentVisible + + private var _adultContentPreference = MutableLiveData( + ContentType.values()[SharedPreferenceManager.contentPreference] + ) + val adultContentPreference: LiveData + get() = _adultContentPreference + + var isChangedAdultContentVisible = false + fun logout(onSuccess: () -> Unit) { compositeDisposable.add( userRepository.logout(token = "Bearer ${SharedPreferenceManager.token}") @@ -71,4 +85,17 @@ class SettingsViewModel(private val userRepository: UserRepository) : BaseViewMo ) ) } + + fun toggleAdultContentVisible() { + val adultContentVisible = SharedPreferenceManager.isAdultContentVisible + _isAdultContentVisible.value = !adultContentVisible + SharedPreferenceManager.isAdultContentVisible = !adultContentVisible + isChangedAdultContentVisible = true + } + + fun setAdultContentPreference(adultContentPreference: ContentType) { + _adultContentPreference.value = adultContentPreference + SharedPreferenceManager.contentPreference = adultContentPreference.ordinal + isChangedAdultContentVisible = true + } } diff --git a/app/src/main/res/drawable-xxhdpi/btn_radio_select_normal.png b/app/src/main/res/drawable-xxhdpi/btn_radio_select_normal.png index 40f508ac966062c49d4154dd31575a7b3d1d66f6..c27ca436a52c5fd934b8a0fb25e3debaab7cdd96 100644 GIT binary patch delta 1486 zcmV;<1u^>l1Jw(V8Gi-<0027t*>V5?010qNS#tmY3ljhU3ljkVnw%H_0004VQb$4n zuFf3k00004XF*Lt006O%3;baP000GQNklAAgr&iPbU(IQ&j=gsWJ-4+uPgUWjAhGDGKFgEXoc0D)5J@OezcT+S*!N zHdD%hyt=wlM}J30x*Z=M>vnm0sZLH#vi`QUwN-VStysu>!unWzaBxuXBLV+QTz#e(SAQ|^`hWU5eRNs^OiLv}a|viH4mj54 zI^?szU-BIV1Dk+^`zATw-Q895^YgC)>Izs3Zj_R~{YRmHUl6c?-H_cFfYNu>*4CDK zOZD~jDFM~}U6hugY^)F$e-@bjdUtoX!T3ppotvA}0jU~k@V#$Sfb}V z0=~JqA*txt-rj!mp{E#e&EyE87LyHTDGOM#sDDoq>3+egvaf1YOG``Ewc{q=&nRkP z0+qtLwdBfCaqXnLMp*$Y1I(SULr^VS*UHK7v#jh|SlWG0Iq31Dj|TXP@U; zU*uZZCLNp4XZulf; zs((qlbs+8>9fWEA=k$eeMUgKBxkt%NL_^yAJzGOPC-92^`dU&RzL zl79RiU>&ZRGxk;1!mNG(+`)lQ!%pKT+ZEea|S$|^+>%WqG1ZfU@24CqlfIcspSkmC?)X4%G81w&Dfm`uzxA~ z^2W-x%!%yEEoh5AJa}Q{NZ-w>@W}#ptvo(Hu4+}*x)iXDjEpS0zkBp}DATsT$>x-B zj-_i&bVsahCvvB1DH*XvYe>?_X&aec<(vQz*G`E$e8IIRCMIg) zS=p8^5qreCU-FeC=AH479D7CcI{(QzEuiHKsur5~5`j(R>bI^6DlT1KUhWWUFUW3;6$+{Z-nznvXiR`IeKvh@ zagi7s8+-OWi5JyN3usEdoO)@!cnO#fjq7ba8Aee^_HKx5aaSqL2jXx&E3?4j2ImNFMQAP*vjFEfsr>2La7erG>}(xnAQT!C_8~1}H7^@Di$O zc#S72T)m;8;iCi+s)FLGG)INfzMY?+rwR>7g{Z8+t`-&+TAG`iW0X`-Wx(1juAk>s oJYK^~n>q4-&d$!lazeWL4|}2&Q=Oqa(_)6&w?*4Eb3)6>(_)9&u> z($do9<>lMk+t}#@jQ{`u4s=pZQvjgp6>(e$L&f^08MApt?SEA60003?NklBO8Qt+;vWG+DzAAc8Ts=KNxrNQ8*(;+<)>VPx4pmVXJ4 zLlf%fgRD$u{~P7Yw7kHt0uP4r>OZh&4=LcpmSSp3pU%Y?yJ7lg) zb=K`ttYZ%xQ@odccu8k5^uQsVOzwx-P+z>>5fcL7jc1JX!-Bz(YzT%@1r-TYp3uR7 zjwI9!ur>rWK&bU%O&_{$u!|15VzJ8|8Y{4Y1{i_@% diff --git a/app/src/main/res/drawable-xxhdpi/btn_radio_select_selected.png b/app/src/main/res/drawable-xxhdpi/btn_radio_select_selected.png index 57f23d15227225e1b3e3ca753b4b007263233a8d..6f39bbcd952d53c8d61056e47f6e2b00cc91711d 100644 GIT binary patch delta 2084 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 phjrdFf%iaRK8=`D%PDHLkV1f)~LJa@_ diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index f759fc2..18cd24e 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -1,5 +1,6 @@ + + + + + + + + + + + + + + + + + + + + + + + +