From f2cca1e14b7b8bf4bbb2b1e34c73beceef045033 Mon Sep 17 00:00:00 2001 From: klaus Date: Thu, 10 Oct 2024 15:37:12 +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=20depth=20=EC=B6=94=EA=B0=80=20-=20=EC=BD=98?= =?UTF-8?q?=ED=85=90=EC=B8=A0=20=EB=B3=B4=EA=B8=B0=20=EC=84=A4=EC=A0=95?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EC=A0=9C=EB=AA=A9=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 1 + .../java/kr/co/vividnext/sodalive/di/AppDI.kt | 2 + .../settings/ContentSettingsActivity.kt | 111 ++++++++++++++ .../settings/ContentSettingsViewModel.kt | 39 +++++ .../sodalive/settings/SettingsActivity.kt | 74 ++------- .../sodalive/settings/SettingsViewModel.kt | 27 ---- .../res/layout/activity_content_settings.xml | 113 ++++++++++++++ app/src/main/res/layout/activity_settings.xml | 143 ++++-------------- 8 files changed, 310 insertions(+), 200 deletions(-) create mode 100644 app/src/main/java/kr/co/vividnext/sodalive/settings/ContentSettingsActivity.kt create mode 100644 app/src/main/java/kr/co/vividnext/sodalive/settings/ContentSettingsViewModel.kt create mode 100644 app/src/main/res/layout/activity_content_settings.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index aac1411..3188925 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -123,6 +123,7 @@ + diff --git a/app/src/main/java/kr/co/vividnext/sodalive/di/AppDI.kt b/app/src/main/java/kr/co/vividnext/sodalive/di/AppDI.kt index 5294857..47579a6 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/di/AppDI.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/di/AppDI.kt @@ -104,6 +104,7 @@ import kr.co.vividnext.sodalive.mypage.service_center.ServiceCenterViewModel import kr.co.vividnext.sodalive.network.TokenAuthenticator import kr.co.vividnext.sodalive.report.ReportApi import kr.co.vividnext.sodalive.report.ReportRepository +import kr.co.vividnext.sodalive.settings.ContentSettingsViewModel import kr.co.vividnext.sodalive.settings.SettingsViewModel import kr.co.vividnext.sodalive.settings.event.EventApi import kr.co.vividnext.sodalive.settings.event.EventRepository @@ -221,6 +222,7 @@ class AppDI(private val context: Context, isDebugMode: Boolean) { viewModel { NoticeViewModel(get()) } viewModel { EventViewModel(get()) } viewModel { NotificationSettingsViewModel(get()) } + viewModel { ContentSettingsViewModel() } viewModel { SettingsViewModel(get()) } viewModel { SeriesDetailViewModel(get(), get()) } viewModel { SeriesListAllViewModel(get()) } diff --git a/app/src/main/java/kr/co/vividnext/sodalive/settings/ContentSettingsActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/settings/ContentSettingsActivity.kt new file mode 100644 index 0000000..19e72d5 --- /dev/null +++ b/app/src/main/java/kr/co/vividnext/sodalive/settings/ContentSettingsActivity.kt @@ -0,0 +1,111 @@ +package kr.co.vividnext.sodalive.settings + +import android.content.Intent +import android.os.Bundle +import android.view.View +import androidx.activity.OnBackPressedCallback +import kr.co.vividnext.sodalive.R +import kr.co.vividnext.sodalive.base.BaseActivity +import kr.co.vividnext.sodalive.common.SharedPreferenceManager +import kr.co.vividnext.sodalive.databinding.ActivityContentSettingsBinding +import kr.co.vividnext.sodalive.splash.SplashActivity +import org.koin.android.ext.android.inject + +class ContentSettingsActivity : BaseActivity( + ActivityContentSettingsBinding::inflate +) { + + private val viewModel: ContentSettingsViewModel by inject() + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + bindData() + + onBackPressedDispatcher.addCallback(this, object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + handleFinish() + } + }) + } + + override fun setupView() { + binding.toolbar.tvBack.text = "콘텐츠 보기 설정" + binding.toolbar.tvBack.setOnClickListener { handleFinish() } + + // 본인 인증 체크 + 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() { + 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 handleFinish() { + if (viewModel.isChangedAdultContentVisible) { + startActivity( + Intent( + this@ContentSettingsActivity, + SplashActivity::class.java + ).apply { + addFlags( + Intent.FLAG_ACTIVITY_CLEAR_TASK or + Intent.FLAG_ACTIVITY_NEW_TASK + ) + } + ) + finish() + } else { + finish() + } + } +} diff --git a/app/src/main/java/kr/co/vividnext/sodalive/settings/ContentSettingsViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/settings/ContentSettingsViewModel.kt new file mode 100644 index 0000000..79a2038 --- /dev/null +++ b/app/src/main/java/kr/co/vividnext/sodalive/settings/ContentSettingsViewModel.kt @@ -0,0 +1,39 @@ +package kr.co.vividnext.sodalive.settings + +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import kr.co.vividnext.sodalive.base.BaseViewModel +import kr.co.vividnext.sodalive.common.SharedPreferenceManager + +class ContentSettingsViewModel : BaseViewModel() { + 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 toggleAdultContentVisible() { + val adultContentVisible = SharedPreferenceManager.isAdultContentVisible + _isAdultContentVisible.value = !adultContentVisible + SharedPreferenceManager.isAdultContentVisible = !adultContentVisible + isChangedAdultContentVisible = true + + if (adultContentVisible) { + SharedPreferenceManager.contentPreference = ContentType.ALL.ordinal + } + } + + fun setAdultContentPreference(adultContentPreference: ContentType) { + _adultContentPreference.value = adultContentPreference + SharedPreferenceManager.contentPreference = adultContentPreference.ordinal + isChangedAdultContentVisible = true + } +} 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 184a417..1e25250 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 @@ -9,7 +9,6 @@ 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 @@ -97,6 +96,20 @@ class SettingsActivity : BaseActivity(ActivitySettingsB ) } + if (SharedPreferenceManager.isAuth) { + binding.rlContentSettings.visibility = View.VISIBLE + binding.rlContentSettings.setOnClickListener { + startActivity( + Intent( + applicationContext, + ContentSettingsActivity::class.java + ) + ) + } + } else { + binding.rlContentSettings.visibility = View.GONE + } + binding.rlTerms.setOnClickListener { val intent = Intent(applicationContext, TermsActivity::class.java) intent.putExtra(Constants.EXTRA_TERMS, Constants.EXTRA_TERMS) @@ -128,42 +141,6 @@ 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() { @@ -178,29 +155,6 @@ 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 cdedf91..f98a3b6 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,20 +18,6 @@ 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}") @@ -85,17 +71,4 @@ 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/layout/activity_content_settings.xml b/app/src/main/res/layout/activity_content_settings.xml new file mode 100644 index 0000000..4628512 --- /dev/null +++ b/app/src/main/res/layout/activity_content_settings.xml @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index 18cd24e..b4ba31d 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -1,6 +1,5 @@ + + + + + + + @@ -223,117 +251,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - -