재생목록 수정 문자열 리소스화
수정 화면 레이블과 검증/오류 문구를 ko/en/ja 리소스로 정리했습니다.
This commit is contained in:
@@ -16,6 +16,7 @@ import io.reactivex.rxjava3.schedulers.Schedulers
|
|||||||
import kr.co.vividnext.sodalive.audio_content.playlist.create.add_content.PlaylistAddContentDialogFragment
|
import kr.co.vividnext.sodalive.audio_content.playlist.create.add_content.PlaylistAddContentDialogFragment
|
||||||
import kr.co.vividnext.sodalive.audio_content.playlist.detail.AudioContentPlaylistContent
|
import kr.co.vividnext.sodalive.audio_content.playlist.detail.AudioContentPlaylistContent
|
||||||
import kr.co.vividnext.sodalive.base.BaseActivity
|
import kr.co.vividnext.sodalive.base.BaseActivity
|
||||||
|
import kr.co.vividnext.sodalive.R
|
||||||
import kr.co.vividnext.sodalive.common.Constants
|
import kr.co.vividnext.sodalive.common.Constants
|
||||||
import kr.co.vividnext.sodalive.common.LoadingDialog
|
import kr.co.vividnext.sodalive.common.LoadingDialog
|
||||||
import kr.co.vividnext.sodalive.databinding.ActivityAudioContentPlaylistModifyBinding
|
import kr.co.vividnext.sodalive.databinding.ActivityAudioContentPlaylistModifyBinding
|
||||||
@@ -70,8 +71,9 @@ class AudioContentPlaylistModifyActivity : BaseActivity<ActivityAudioContentPlay
|
|||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
|
||||||
if (playlistId <= 0) {
|
if (playlistId <= 0) {
|
||||||
showToast("잘못된 요청입니다.")
|
showToast(getString(R.string.screen_audio_content_error_invalid_request))
|
||||||
finish()
|
finish()
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
imm = getSystemService(
|
imm = getSystemService(
|
||||||
@@ -83,7 +85,6 @@ class AudioContentPlaylistModifyActivity : BaseActivity<ActivityAudioContentPlay
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun setupView() {
|
override fun setupView() {
|
||||||
binding.tvBack.text = "재생목록 수정"
|
|
||||||
binding.tvBack.setOnClickListener { finish() }
|
binding.tvBack.setOnClickListener { finish() }
|
||||||
|
|
||||||
loadingDialog = LoadingDialog(this, layoutInflater)
|
loadingDialog = LoadingDialog(this, layoutInflater)
|
||||||
@@ -207,13 +208,21 @@ class AudioContentPlaylistModifyActivity : BaseActivity<ActivityAudioContentPlay
|
|||||||
|
|
||||||
@SuppressLint("SetTextI18n")
|
@SuppressLint("SetTextI18n")
|
||||||
private fun setTitle(title: String) {
|
private fun setTitle(title: String) {
|
||||||
binding.tvTitleLength.text = "${title.length}/30"
|
binding.tvTitleLength.text = getString(
|
||||||
|
R.string.audio_content_playlist_create_length_format,
|
||||||
|
title.length,
|
||||||
|
30
|
||||||
|
)
|
||||||
viewModel.title = title
|
viewModel.title = title
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("SetTextI18n")
|
@SuppressLint("SetTextI18n")
|
||||||
private fun setDesc(desc: String) {
|
private fun setDesc(desc: String) {
|
||||||
binding.tvDescLength.text = "${desc.length}/40"
|
binding.tvDescLength.text = getString(
|
||||||
|
R.string.audio_content_playlist_create_length_format,
|
||||||
|
desc.length,
|
||||||
|
40
|
||||||
|
)
|
||||||
viewModel.desc = desc
|
viewModel.desc = desc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,9 @@ import kr.co.vividnext.sodalive.audio_content.playlist.create.PlaylistContentIdA
|
|||||||
import kr.co.vividnext.sodalive.audio_content.playlist.detail.AudioContentPlaylistContent
|
import kr.co.vividnext.sodalive.audio_content.playlist.detail.AudioContentPlaylistContent
|
||||||
import kr.co.vividnext.sodalive.audio_content.playlist.detail.GetPlaylistDetailResponse
|
import kr.co.vividnext.sodalive.audio_content.playlist.detail.GetPlaylistDetailResponse
|
||||||
import kr.co.vividnext.sodalive.base.BaseViewModel
|
import kr.co.vividnext.sodalive.base.BaseViewModel
|
||||||
|
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
|
||||||
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
|
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
|
||||||
|
import kr.co.vividnext.sodalive.R
|
||||||
|
|
||||||
class AudioContentPlaylistModifyViewModel(
|
class AudioContentPlaylistModifyViewModel(
|
||||||
private val repository: AudioContentPlaylistRepository
|
private val repository: AudioContentPlaylistRepository
|
||||||
@@ -37,6 +39,9 @@ class AudioContentPlaylistModifyViewModel(
|
|||||||
var desc: String = ""
|
var desc: String = ""
|
||||||
private var playlistId: Long = 0
|
private var playlistId: Long = 0
|
||||||
|
|
||||||
|
private val unknownErrorMessage: String
|
||||||
|
get() = SodaLiveApplicationHolder.get().getString(R.string.common_error_unknown)
|
||||||
|
|
||||||
fun addContent(item: AudioContentPlaylistContent) {
|
fun addContent(item: AudioContentPlaylistContent) {
|
||||||
contentList.add(item)
|
contentList.add(item)
|
||||||
_contentListLiveData.value = contentList
|
_contentListLiveData.value = contentList
|
||||||
@@ -85,7 +90,7 @@ class AudioContentPlaylistModifyViewModel(
|
|||||||
if (it.message != null) {
|
if (it.message != null) {
|
||||||
_toastLiveData.value = it.message
|
_toastLiveData.value = it.message
|
||||||
} else {
|
} else {
|
||||||
_toastLiveData.value = "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요."
|
_toastLiveData.value = unknownErrorMessage
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -94,7 +99,7 @@ class AudioContentPlaylistModifyViewModel(
|
|||||||
if (it.message != null) {
|
if (it.message != null) {
|
||||||
_toastLiveData.value = it.message
|
_toastLiveData.value = it.message
|
||||||
} else {
|
} else {
|
||||||
_toastLiveData.value = "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요."
|
_toastLiveData.value = unknownErrorMessage
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@@ -104,12 +109,18 @@ class AudioContentPlaylistModifyViewModel(
|
|||||||
|
|
||||||
private fun validate(): Boolean {
|
private fun validate(): Boolean {
|
||||||
if (title.isBlank() || title.length < 3) {
|
if (title.isBlank() || title.length < 3) {
|
||||||
_toastLiveData.value = "제목을 3자 이상 입력하세요"
|
_toastLiveData.value = SodaLiveApplicationHolder.get().getString(
|
||||||
|
R.string.audio_content_playlist_create_title_min_length_error,
|
||||||
|
3
|
||||||
|
)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
if (contentList.isEmpty()) {
|
if (contentList.isEmpty()) {
|
||||||
_toastLiveData.value = "콘텐츠를 1개 이상 추가하세요"
|
_toastLiveData.value = SodaLiveApplicationHolder.get().getString(
|
||||||
|
R.string.audio_content_playlist_create_content_min_count_error,
|
||||||
|
1
|
||||||
|
)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -136,9 +147,7 @@ class AudioContentPlaylistModifyViewModel(
|
|||||||
if (it.message != null) {
|
if (it.message != null) {
|
||||||
_toastLiveData.postValue(it.message)
|
_toastLiveData.postValue(it.message)
|
||||||
} else {
|
} else {
|
||||||
_toastLiveData.postValue(
|
_toastLiveData.postValue(unknownErrorMessage)
|
||||||
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요."
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_isLoading.value = false
|
_isLoading.value = false
|
||||||
@@ -146,7 +155,7 @@ class AudioContentPlaylistModifyViewModel(
|
|||||||
{
|
{
|
||||||
_isLoading.value = false
|
_isLoading.value = false
|
||||||
it.message?.let { message -> Logger.e(message) }
|
it.message?.let { message -> Logger.e(message) }
|
||||||
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.")
|
_toastLiveData.postValue(unknownErrorMessage)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
android:gravity="center_vertical"
|
android:gravity="center_vertical"
|
||||||
android:minHeight="48dp"
|
android:minHeight="48dp"
|
||||||
android:paddingHorizontal="13.3dp"
|
android:paddingHorizontal="13.3dp"
|
||||||
android:text="재생목록 수정"
|
android:text="@string/audio_content_playlist_modify_title"
|
||||||
android:textColor="@color/color_eeeeee"
|
android:textColor="@color/color_eeeeee"
|
||||||
android:textSize="18.3sp"
|
android:textSize="18.3sp"
|
||||||
app:drawableStartCompat="@drawable/ic_back"
|
app:drawableStartCompat="@drawable/ic_back"
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:minHeight="48dp"
|
android:minHeight="48dp"
|
||||||
android:paddingHorizontal="13.3dp"
|
android:paddingHorizontal="13.3dp"
|
||||||
android:text="수정"
|
android:text="@string/audio_content_playlist_modify_save"
|
||||||
android:textColor="@color/color_eeeeee"
|
android:textColor="@color/color_eeeeee"
|
||||||
android:textSize="14.7sp" />
|
android:textSize="14.7sp" />
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
@@ -55,7 +55,7 @@
|
|||||||
android:layout_marginStart="13.3dp"
|
android:layout_marginStart="13.3dp"
|
||||||
android:layout_marginTop="26.7dp"
|
android:layout_marginTop="26.7dp"
|
||||||
android:fontFamily="@font/gmarket_sans_bold"
|
android:fontFamily="@font/gmarket_sans_bold"
|
||||||
android:text="재생목록 제목"
|
android:text="@string/audio_content_playlist_modify_title_label"
|
||||||
android:textColor="@color/color_eeeeee"
|
android:textColor="@color/color_eeeeee"
|
||||||
android:textSize="16.7sp"
|
android:textSize="16.7sp"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
@@ -67,7 +67,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginEnd="13.3dp"
|
android:layout_marginEnd="13.3dp"
|
||||||
android:fontFamily="@font/gmarket_sans_medium"
|
android:fontFamily="@font/gmarket_sans_medium"
|
||||||
android:text="0/30"
|
android:text="@string/audio_content_playlist_create_title_length_initial"
|
||||||
android:textColor="@color/color_777777"
|
android:textColor="@color/color_777777"
|
||||||
android:textSize="13.3sp"
|
android:textSize="13.3sp"
|
||||||
app:layout_constraintBottom_toBottomOf="@+id/tv_title"
|
app:layout_constraintBottom_toBottomOf="@+id/tv_title"
|
||||||
@@ -100,7 +100,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="26.7dp"
|
android:layout_marginTop="26.7dp"
|
||||||
android:fontFamily="@font/gmarket_sans_bold"
|
android:fontFamily="@font/gmarket_sans_bold"
|
||||||
android:text="재생목록 설명을 입력해주세요."
|
android:text="@string/audio_content_playlist_modify_desc_label"
|
||||||
android:textColor="@color/color_eeeeee"
|
android:textColor="@color/color_eeeeee"
|
||||||
android:textSize="16.7sp"
|
android:textSize="16.7sp"
|
||||||
app:layout_constraintStart_toStartOf="@+id/et_title"
|
app:layout_constraintStart_toStartOf="@+id/et_title"
|
||||||
@@ -111,7 +111,7 @@
|
|||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:fontFamily="@font/gmarket_sans_medium"
|
android:fontFamily="@font/gmarket_sans_medium"
|
||||||
android:text="0/40"
|
android:text="@string/audio_content_playlist_create_desc_length_initial"
|
||||||
android:textColor="@color/color_777777"
|
android:textColor="@color/color_777777"
|
||||||
android:textSize="13.3sp"
|
android:textSize="13.3sp"
|
||||||
app:layout_constraintBottom_toBottomOf="@+id/tv_desc"
|
app:layout_constraintBottom_toBottomOf="@+id/tv_desc"
|
||||||
@@ -146,7 +146,7 @@
|
|||||||
android:drawablePadding="3.5dp"
|
android:drawablePadding="3.5dp"
|
||||||
android:fontFamily="@font/gmarket_sans_bold"
|
android:fontFamily="@font/gmarket_sans_bold"
|
||||||
android:gravity="center_vertical"
|
android:gravity="center_vertical"
|
||||||
android:text="새로운 콘텐츠 추가/제거"
|
android:text="@string/audio_content_playlist_create_add_content"
|
||||||
android:textColor="@color/color_3bb9f1"
|
android:textColor="@color/color_3bb9f1"
|
||||||
app:drawableStartCompat="@drawable/btn_plus_round"
|
app:drawableStartCompat="@drawable/btn_plus_round"
|
||||||
app:layout_constraintStart_toStartOf="@+id/et_desc"
|
app:layout_constraintStart_toStartOf="@+id/et_desc"
|
||||||
|
|||||||
@@ -879,6 +879,10 @@
|
|||||||
<string name="audio_content_playlist_content_count">Total %1$d items</string>
|
<string name="audio_content_playlist_content_count">Total %1$d items</string>
|
||||||
<string name="audio_content_playlist_empty_title">No playlists yet.</string>
|
<string name="audio_content_playlist_empty_title">No playlists yet.</string>
|
||||||
<string name="audio_content_playlist_empty_desc">Create a playlist with your favorite content.</string>
|
<string name="audio_content_playlist_empty_desc">Create a playlist with your favorite content.</string>
|
||||||
|
<string name="audio_content_playlist_modify_title">Edit playlist</string>
|
||||||
|
<string name="audio_content_playlist_modify_save">Save</string>
|
||||||
|
<string name="audio_content_playlist_modify_title_label">Title</string>
|
||||||
|
<string name="audio_content_playlist_modify_desc_label">Description.</string>
|
||||||
<string name="audio_content_playlist_detail_play">Play</string>
|
<string name="audio_content_playlist_detail_play">Play</string>
|
||||||
<string name="audio_content_playlist_detail_shuffle">Shuffle</string>
|
<string name="audio_content_playlist_detail_shuffle">Shuffle</string>
|
||||||
<string name="audio_content_playlist_detail_created_date">Created on %1$s</string>
|
<string name="audio_content_playlist_detail_created_date">Created on %1$s</string>
|
||||||
|
|||||||
@@ -879,6 +879,10 @@
|
|||||||
<string name="audio_content_playlist_content_count">合計 %1$d件</string>
|
<string name="audio_content_playlist_content_count">合計 %1$d件</string>
|
||||||
<string name="audio_content_playlist_empty_title">プレイリストが空です。</string>
|
<string name="audio_content_playlist_empty_title">プレイリストが空です。</string>
|
||||||
<string name="audio_content_playlist_empty_desc">よく聴くコンテンツで\nプレイリストを作成してください。</string>
|
<string name="audio_content_playlist_empty_desc">よく聴くコンテンツで\nプレイリストを作成してください。</string>
|
||||||
|
<string name="audio_content_playlist_modify_title">プレイリスト編集</string>
|
||||||
|
<string name="audio_content_playlist_modify_save">保存</string>
|
||||||
|
<string name="audio_content_playlist_modify_title_label">タイトル</string>
|
||||||
|
<string name="audio_content_playlist_modify_desc_label">説明を入力してください。</string>
|
||||||
<string name="audio_content_playlist_detail_play">再生</string>
|
<string name="audio_content_playlist_detail_play">再生</string>
|
||||||
<string name="audio_content_playlist_detail_shuffle">シャッフル</string>
|
<string name="audio_content_playlist_detail_shuffle">シャッフル</string>
|
||||||
<string name="audio_content_playlist_detail_created_date">作成日 %1$s</string>
|
<string name="audio_content_playlist_detail_created_date">作成日 %1$s</string>
|
||||||
|
|||||||
@@ -878,6 +878,10 @@
|
|||||||
<string name="audio_content_playlist_content_count">총 %1$d개</string>
|
<string name="audio_content_playlist_content_count">총 %1$d개</string>
|
||||||
<string name="audio_content_playlist_empty_title">재생목록이 비어있습니다.</string>
|
<string name="audio_content_playlist_empty_title">재생목록이 비어있습니다.</string>
|
||||||
<string name="audio_content_playlist_empty_desc">자주 듣는 콘텐츠를\n재생목록으로 만들어 보세요.</string>
|
<string name="audio_content_playlist_empty_desc">자주 듣는 콘텐츠를\n재생목록으로 만들어 보세요.</string>
|
||||||
|
<string name="audio_content_playlist_modify_title">재생목록 수정</string>
|
||||||
|
<string name="audio_content_playlist_modify_save">수정</string>
|
||||||
|
<string name="audio_content_playlist_modify_title_label">제목</string>
|
||||||
|
<string name="audio_content_playlist_modify_desc_label">설명을 입력해주세요.</string>
|
||||||
<string name="audio_content_playlist_detail_play">재생</string>
|
<string name="audio_content_playlist_detail_play">재생</string>
|
||||||
<string name="audio_content_playlist_detail_shuffle">셔플</string>
|
<string name="audio_content_playlist_detail_shuffle">셔플</string>
|
||||||
<string name="audio_content_playlist_detail_created_date">만든 날짜 %1$s</string>
|
<string name="audio_content_playlist_detail_created_date">만든 날짜 %1$s</string>
|
||||||
|
|||||||
Reference in New Issue
Block a user