Skip to content

Commit

Permalink
#210 SpanProvider 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
tgyuuAn committed Aug 21, 2023
1 parent fcbf47f commit 6d5bf69
Show file tree
Hide file tree
Showing 8 changed files with 118 additions and 73 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -176,36 +176,4 @@ class MedicineInfoMapper @Inject constructor() {
dataMap.clear()
result
}

fun initHeaderSpan(context: Context, text: String): SpannableStringBuilder {
return SpannableStringBuilder(text).apply {
val underline1Idx =
text.indexOf(context.getString(R.string.highlightWord1)) to text.indexOf(context.getString(R.string.highlightWord1)) + 2

setSpan(UnderlineSpan(), underline1Idx.first, underline1Idx.second, Spanned.SPAN_INCLUSIVE_INCLUSIVE)
setSpan(StyleSpan(Typeface.BOLD), underline1Idx.first, underline1Idx.second, Spanned.SPAN_INCLUSIVE_INCLUSIVE)
setSpan(RelativeSizeSpan(TEXT_SIZE_PERCENT), underline1Idx.first, underline1Idx.second, Spanned.SPAN_INCLUSIVE_INCLUSIVE)

val underline2Idx =
text.indexOf(context.getString(R.string.highlightWord2)) to text.indexOf(context.getString(R.string.highlightWord2)) + 2

setSpan(UnderlineSpan(), underline2Idx.first, underline2Idx.second, Spanned.SPAN_INCLUSIVE_INCLUSIVE)
setSpan(StyleSpan(Typeface.BOLD), underline2Idx.first, underline2Idx.second, Spanned.SPAN_INCLUSIVE_INCLUSIVE)
setSpan(RelativeSizeSpan(TEXT_SIZE_PERCENT), underline2Idx.first, underline2Idx.second, Spanned.SPAN_INCLUSIVE_INCLUSIVE)
}
}

fun getNoHistorySpan(context: Context): SpannableStringBuilder {
val text = context.getString(R.string.failedLoading)
val highLightIndex = text.indexOf(context.getString(R.string.highlightWord3))
return SpannableStringBuilder(text).apply {
setSpan(
ForegroundColorSpan(ContextCompat.getColor(context, R.color.main)),
highLightIndex,
highLightIndex + 3,
Spannable.SPAN_INCLUSIVE_INCLUSIVE,
)
setSpan(UnderlineSpan(), highLightIndex, highLightIndex + 3, Spannable.SPAN_INCLUSIVE_INCLUSIVE)
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
package com.android.mediproject.core.common.mapper

import android.content.Context
import android.graphics.Typeface
import android.text.Spannable
import android.text.SpannableStringBuilder
import android.text.Spanned
import android.text.style.ForegroundColorSpan
import android.text.style.RelativeSizeSpan
import android.text.style.StyleSpan
import android.text.style.UnderlineSpan
import androidx.core.content.ContentProviderCompat.requireContext
import androidx.core.content.ContextCompat
import com.android.mediproject.core.common.R
import javax.inject.Inject
import javax.inject.Singleton

@Singleton
class SpanProvider @Inject constructor() {
companion object {
private const val TEXT_SIZE_PERCENT = 1.2F
}

fun homeInitHeaderSpan(context: Context, text: String): SpannableStringBuilder {
return SpannableStringBuilder(text).apply {
val underline1Idx =
text.indexOf(context.getString(R.string.highlightWord1)) to text.indexOf(context.getString(R.string.highlightWord1)) + 2

setSpan(UnderlineSpan(), underline1Idx.first, underline1Idx.second, Spanned.SPAN_INCLUSIVE_INCLUSIVE)
setSpan(StyleSpan(Typeface.BOLD), underline1Idx.first, underline1Idx.second, Spanned.SPAN_INCLUSIVE_INCLUSIVE)
setSpan(
RelativeSizeSpan(TEXT_SIZE_PERCENT),
underline1Idx.first,
underline1Idx.second,
Spanned.SPAN_INCLUSIVE_INCLUSIVE,
)

val underline2Idx =
text.indexOf(context.getString(R.string.highlightWord2)) to text.indexOf(context.getString(R.string.highlightWord2)) + 2

setSpan(UnderlineSpan(), underline2Idx.first, underline2Idx.second, Spanned.SPAN_INCLUSIVE_INCLUSIVE)
setSpan(StyleSpan(Typeface.BOLD), underline2Idx.first, underline2Idx.second, Spanned.SPAN_INCLUSIVE_INCLUSIVE)
setSpan(
RelativeSizeSpan(TEXT_SIZE_PERCENT),
underline2Idx.first,
underline2Idx.second,
Spanned.SPAN_INCLUSIVE_INCLUSIVE,
)
}
}

fun penaltyGetNoHistorySpan(context: Context): SpannableStringBuilder {
val text = context.getString(R.string.failedLoading)
val highLightIndex = text.indexOf(context.getString(R.string.highlightWord3))
return SpannableStringBuilder(text).apply {
setSpan(
ForegroundColorSpan(ContextCompat.getColor(context, R.color.main)),
highLightIndex,
highLightIndex + 3,
Spannable.SPAN_INCLUSIVE_INCLUSIVE,
)
setSpan(UnderlineSpan(), highLightIndex, highLightIndex + 3, Spannable.SPAN_INCLUSIVE_INCLUSIVE)
}
}

fun myPageSetNoShowCommentListSpan(context: Context): SpannableStringBuilder {
return SpannableStringBuilder(context.getString(R.string.noMyComment)).apply {
setSpan(
ForegroundColorSpan(
ContextCompat.getColor(
context,
R.color.main,
),
),
7, 9, Spannable.SPAN_INCLUSIVE_INCLUSIVE,
)
setSpan(
UnderlineSpan(),
7,
9,
Spannable.SPAN_INCLUSIVE_INCLUSIVE,
)
}
}

fun myPageSetGuestModeScreenSpan(context: Context): SpannableStringBuilder {
return SpannableStringBuilder(context.getString(R.string.guestDescription)).apply {
setSpan(
ForegroundColorSpan(
ContextCompat.getColor(
context,
R.color.main,
),
),
15, 18,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE,
)
setSpan(UnderlineSpan(), 15, 18, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
}
}
}
4 changes: 4 additions & 0 deletions core/common/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -64,9 +64,13 @@

<string name="noInternetConnection">인터넷 연결이 필요합니다.</string>

<!-- SpanProvider -->
<string name="highlightWord1">찾고</string>
<string name="highlightWord2">소통</string>

<string name="failedLoading">식약처로 부터 데이터를 불러오는데 실패했습니다.</string>
<string name="highlightWord3">데이터</string>

<string name="noMyComment">내가 작성한 댓글이 없습니다.</string>
<string name="guestDescription">로그인하여 다른 사용자들과 \n소통을 즐겨보세요 !</string>
</resources>
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ class GetUserUseCase @Inject constructor(private val appDataStore: AppDataStore)
suspend operator fun invoke(): Flow<User> = channelFlow {
appDataStore.nickName.collect { nickName ->
Log.d("wap", nickName)
trySend(User(nickName = nickName))
trySend(User(nickName = nickName,""))
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import androidx.core.os.bundleOf
import androidx.fragment.app.viewModels
import androidx.navigation.fragment.findNavController
import com.android.mediproject.core.common.mapper.MedicineInfoMapper
import com.android.mediproject.core.common.mapper.SpanProvider
import com.android.mediproject.core.common.util.SystemBarStyler
import com.android.mediproject.core.common.viewmodel.repeatOnStarted
import com.android.mediproject.core.ui.base.BaseFragment
Expand All @@ -28,7 +29,7 @@ class HomeFragment : BaseFragment<FragmentHomeBinding, HomeViewModel>(FragmentHo

@Inject lateinit var systemBarStyler: SystemBarStyler

@Inject lateinit var medicineInfoMapper: MedicineInfoMapper
@Inject lateinit var spanProvider: SpanProvider

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
Expand Down Expand Up @@ -132,7 +133,7 @@ class HomeFragment : BaseFragment<FragmentHomeBinding, HomeViewModel>(FragmentHo
private fun setHeaderText() {
val span: SpannableStringBuilder
viewLifecycleOwner.apply {
span = medicineInfoMapper.initHeaderSpan(requireContext(), getString(R.string.headerTextOnHome))
span = spanProvider.homeInitHeaderSpan(requireContext(), getString(R.string.headerTextOnHome))
}
binding.headerText.text = span
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import android.view.View
import androidx.core.content.ContextCompat
import androidx.fragment.app.viewModels
import androidx.recyclerview.widget.LinearLayoutManager
import com.android.mediproject.core.common.mapper.SpanProvider
import com.android.mediproject.core.common.util.SystemBarStyler
import com.android.mediproject.core.common.viewmodel.UiState
import com.android.mediproject.core.model.token.CurrentTokens
Expand All @@ -30,6 +31,9 @@ class MyPageFragment :

@Inject
lateinit var systemBarStyler: SystemBarStyler
@Inject
lateinit var spanProvider: SpanProvider

override val fragmentViewModel: MyPageViewModel by viewModels()
private val myCommentListAdapter: MyPageMyCommentAdapter by lazy { MyPageMyCommentAdapter() }
private var myPageMoreBottomSheet: MyPageMoreBottomSheetFragment? = null
Expand Down Expand Up @@ -91,21 +95,7 @@ class MyPageFragment :
}

private fun setGuestModeScreenSpan(): SpannableStringBuilder {
val span =
SpannableStringBuilder(getString(com.android.mediproject.feature.mypage.R.string.guestDescription)).apply {
setSpan(
ForegroundColorSpan(
ContextCompat.getColor(
requireContext(),
R.color.main,
),
),
15, 18,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE,
)
setSpan(UnderlineSpan(), 15, 18, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
}
return span
return spanProvider.myPageSetGuestModeScreenSpan(requireContext())
}

private fun setGuestModeScreenVisible() = binding.apply {
Expand Down Expand Up @@ -253,25 +243,7 @@ class MyPageFragment :
}

private fun setNoShowCommentListSpan(): SpannableStringBuilder {
val span =
SpannableStringBuilder(getString(com.android.mediproject.feature.mypage.R.string.noMyComment)).apply {
setSpan(
ForegroundColorSpan(
ContextCompat.getColor(
requireContext(),
R.color.main,
),
),
7, 9, Spannable.SPAN_INCLUSIVE_INCLUSIVE,
)
setSpan(
UnderlineSpan(),
7,
9,
Spannable.SPAN_INCLUSIVE_INCLUSIVE,
)
}
return span
return spanProvider.myPageSetNoShowCommentListSpan(requireContext())
}

private fun setNoShowCommentListVisible() = binding.apply {
Expand Down
2 changes: 0 additions & 2 deletions feature/mypage/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,8 @@
<string name="myFravoriteList">즐겨찾기 목록</string>
<string name="myCommentList">내가 작성한 댓글 목록</string>
<string name="guestMode">게스트 모드</string>
<string name="guestDescription">로그인하여 다른 사용자들과 \n소통을 즐겨보세요 !</string>
<string name="login">로그인</string>
<string name="signUp">회원가입</string>
<string name="noMyComment">내가 작성한 댓글이 없습니다.</string>

<string name="changeNickName">닉네임 변경</string>
<string name="changePassword">비밀번호 변경</string>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import android.view.View
import androidx.fragment.app.viewModels
import androidx.navigation.fragment.findNavController
import com.android.mediproject.core.common.mapper.MedicineInfoMapper
import com.android.mediproject.core.common.mapper.SpanProvider
import com.android.mediproject.core.common.util.deepNavigate
import com.android.mediproject.core.common.util.navigateByDeepLink
import com.android.mediproject.core.common.viewmodel.UiState
Expand All @@ -29,7 +30,7 @@ class RecentPenaltyListFragment :
lateinit var penaltyListAdapter: PenaltyListAdapter

@Inject
lateinit var medicineInfoMapper: MedicineInfoMapper
lateinit var spanProvider: SpanProvider

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
Expand All @@ -46,7 +47,7 @@ class RecentPenaltyListFragment :
}
repeatOnStarted { eventFlow.collect { event -> handleEvent(event) } }
}
noHistoryTextView.text = medicineInfoMapper.getNoHistorySpan(requireContext())
noHistoryTextView.text = spanProvider.penaltyGetNoHistorySpan(requireContext())
}
setRecyclerView()
}
Expand Down

0 comments on commit 6d5bf69

Please sign in to comment.