Skip to content
This repository has been archived by the owner on Oct 18, 2023. It is now read-only.

Commit

Permalink
1.3.0 업데이트 (#241)
Browse files Browse the repository at this point in the history
* 스플래시 화면 로티 추가

* 내가 작성한 제품 아이템 태그 디자인 변경

* 리뷰 등록/수정 chip 디자인 수정

* 리뷰 필터 디자인 변경

* Small Chip 추가, Factory 패턴 수정

* 제품 기호도 선택 이미지 교체

* 신규 제품 기록하기 기호도 로직 변경

* 리뷰 수정하기 기호도 로직 변경

* 리뷰 작성 내용 디자인 변경

* 이미 기록한 제품 팻말 표시

* 이미 기록한 제품은 내가 작성한 리뷰 화면으로 이동

* 이미지 조정 및 로직 수정

* Version Up
  • Loading branch information
kangmin1012 committed Mar 20, 2022
1 parent 8518188 commit 7214f34
Show file tree
Hide file tree
Showing 61 changed files with 1,140 additions and 238 deletions.
1 change: 1 addition & 0 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ dependencies {
implementation(AndroidXDependencies.security)
implementation(AndroidXDependencies.legacy)
implementation(AndroidXDependencies.lifeCycleKtx)
implementation(AndroidXDependencies.livedataLifeCycle)
implementation(AndroidXDependencies.lifecycleJava8)

// Material Design
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package com.teamounce.ounce.feed.adapter

import android.annotation.SuppressLint
import android.content.Context
import android.content.Intent
import android.view.Gravity
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
Expand All @@ -12,6 +14,9 @@ import com.teamounce.ounce.databinding.ItemFeedListBinding
import com.teamounce.ounce.feed.model.ResponseFeedReviewData
import com.teamounce.ounce.feed.ui.FoodDetailActivity
import com.teamounce.ounce.review.ui.ReviewModifyActivity
import com.teamounce.ounce.util.ChipClient
import com.teamounce.ounce.util.SmallChipFactory
import com.teamounce.ounce.util.dp
import com.teamounce.ounce.util.dpFloat

class FeedListAdapter : RecyclerView.Adapter<FeedListAdapter.FeedListViewHolder>() {
Expand All @@ -22,7 +27,7 @@ class FeedListAdapter : RecyclerView.Adapter<FeedListAdapter.FeedListViewHolder>
val binding =
ItemFeedListBinding.inflate(LayoutInflater.from(parent.context), parent, false)

return FeedListViewHolder(binding)
return FeedListViewHolder(binding, parent.context)
}

override fun getItemCount(): Int = feedList.size
Expand All @@ -31,7 +36,7 @@ class FeedListAdapter : RecyclerView.Adapter<FeedListAdapter.FeedListViewHolder>
holder.onBind(feedList[position])
}

inner class FeedListViewHolder(val binding: ItemFeedListBinding) :
inner class FeedListViewHolder(val binding: ItemFeedListBinding, val context: Context) :
RecyclerView.ViewHolder(binding.root) {

fun onBind(data: ResponseFeedReviewData.Data) {
Expand Down Expand Up @@ -63,17 +68,13 @@ class FeedListAdapter : RecyclerView.Adapter<FeedListAdapter.FeedListViewHolder>

@SuppressLint("SetTextI18n")
private fun setChip(tag: String): Chip {
val chip = Chip(itemView.context)
chip.apply {
layoutDirection = View.LAYOUT_DIRECTION_LOCALE
return ChipClient.create(LayoutInflater.from(context), SmallChipFactory()).apply {
text = "#${tag}"
textAlignment = View.TEXT_ALIGNMENT_CENTER
chipStrokeWidth = 1.dpFloat
setChipStrokeColorResource(R.color.orange2)
setTextAppearanceResource(R.style.filterTextStyle)
setChipBackgroundColorResource(R.color.white)
isChecked = true
isClickable = false
isFocusable = false
isEnabled = false
}
return chip
}
}
}
4 changes: 2 additions & 2 deletions app/src/main/java/com/teamounce/ounce/feed/ui/FeedActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -85,13 +85,13 @@ class FeedActivity : BindingActivity<ActivityFeedBinding>(R.layout.activity_feed
}

private fun setObserve() {
mViewModel.responseFeedList.observe(this, {
mViewModel.responseFeedList.observe(this) {
if (it.isEmpty()) {
binding.noFeedTxt.visibility = View.VISIBLE
} else {
binding.noFeedTxt.visibility = View.INVISIBLE
}
})
}
}

private fun initSortBottomSheet() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.teamounce.ounce.feed.ui

import android.app.Dialog
import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
Expand All @@ -12,7 +11,7 @@ import com.google.android.material.chip.Chip
import com.teamounce.ounce.R
import com.teamounce.ounce.databinding.ItemFeedFilterBottomSheetBinding
import com.teamounce.ounce.feed.viewmodel.FeedActivityViewModel
import com.teamounce.ounce.util.dpFloat
import com.teamounce.ounce.util.ChipClient
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
Expand Down Expand Up @@ -46,11 +45,11 @@ class FeedBottomSheetDialog(private val viewModel: FeedActivityViewModel) :
}

private fun setObserve() {
viewModel.filterSet.observe(viewLifecycleOwner, {
viewModel.filterSet.observe(viewLifecycleOwner) {
if (it) {
setChip()
}
})
}
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
Expand Down Expand Up @@ -131,21 +130,10 @@ class FeedBottomSheetDialog(private val viewModel: FeedActivityViewModel) :
}

private fun makeChipItem(i: MutableMap.MutableEntry<String, Boolean>): Chip {
val chip = Chip(binding.root.context)
chip.apply {
layoutDirection = View.LAYOUT_DIRECTION_LOCALE
return ChipClient.create(layoutInflater).apply {
text = i.key
textAlignment = View.TEXT_ALIGNMENT_CENTER
chipStrokeWidth = 1.dpFloat
isCheckable = true
isChecked = i.value
isCheckedIconVisible = false
setChipStrokeColorResource(R.color.feed_bottom_sheet_select_color)
setTextAppearanceResource(R.style.Feed_BottomSheet_Text)
setChipBackgroundColorResource(R.color.white)
setRippleColorResource(R.color.orange2)
}
return chip
}

override fun onDestroy() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ class FoodDetailActivity :
super.onCreate(savedInstanceState)
StatusBarUtil.setStatusBar(this)
binding.lifecycleOwner = this
binding.viewModel = feedViewModel
reviewIndex = intent.getIntExtra("reviewIndex", -1)
feedViewModel.fetchReviewData(reviewIndex)
setUIListener(reviewIndex)
Expand Down Expand Up @@ -71,9 +72,7 @@ class FoodDetailActivity :
setDateTopMargin(it.catFoodReview.memo.isEmpty())
with(it.catFoodReview.preference) {
setCommentText(this)
binding.ratingbarDetailRating.setStar(this.toFloat())
}
binding.ratingbarDetailRating.setmClickable(false)

val tagList = listOf(
it.catFoodReview.tag1,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,12 @@ class FeedViewModel @Inject constructor(
val isSuccess: LiveData<Boolean>
get() = _isSuccess

val preferenceLiveData= _foodReview.map {
it?.let {
return@map it.catFoodReview.preference
} ?: 0
}

fun fetchReviewData(reviewIndex: Int) {
viewModelScope.launch {
_foodReview.value = feedRepository.getFoodReviewList(RequestReview(reviewIndex))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package com.teamounce.ounce.review.model

import android.os.Parcelable
import com.google.gson.annotations.SerializedName
import kotlinx.android.parcel.Parcelize
import kotlinx.parcelize.Parcelize

data class ResponseSearch(
@SerializedName("data")
Expand All @@ -22,6 +22,10 @@ data class ResponseSearch(
@SerializedName("productName")
val productName: String,
@SerializedName("type")
val type: String
val type: String,
@SerializedName("isRecord")
val record: Boolean,
@SerializedName("reviewIndex")
val reviewIndex: Int?
) : Parcelable
}
52 changes: 36 additions & 16 deletions app/src/main/java/com/teamounce/ounce/review/ui/ReviewActivity.kt
Original file line number Diff line number Diff line change
@@ -1,22 +1,18 @@
package com.teamounce.ounce.review.ui

import android.annotation.SuppressLint
import android.app.Activity
import android.content.Context
import android.content.Intent
import android.database.Cursor
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.os.Environment
import android.provider.MediaStore
import android.provider.OpenableColumns
import android.util.Log
import android.view.View
import android.widget.CheckBox
import android.widget.CompoundButton
import android.widget.Toast
import androidx.activity.viewModels
import androidx.lifecycle.lifecycleScope
import com.bumptech.glide.Glide
import com.google.android.material.chip.Chip
import com.teamounce.ounce.R
import com.teamounce.ounce.base.BindingActivity
Expand All @@ -33,20 +29,19 @@ import gun0912.tedimagepicker.builder.TedImagePicker
import kotlinx.coroutines.launch
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.MultipartBody
import okhttp3.RequestBody.Companion.asRequestBody
import okhttp3.RequestBody.Companion.toRequestBody
import java.io.File
import java.io.FileOutputStream
import java.io.InputStream


@AndroidEntryPoint
class ReviewActivity : BindingActivity<ActivityReviewBinding>(R.layout.activity_review) {
private val reviewViewModel: ReviewViewModel by viewModels()
private lateinit var imageSliderAdapter: CatFoodSliderAdapter
private val preferenceCheckBoxList = mutableListOf<CheckBox>()

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding.lifecycleOwner = this
binding.activity = this
binding.viewModel = reviewViewModel
StatusBarUtil.setStatusBar(this)
val initCatFoodData = intent.getParcelableExtra<ResponseSearch.Data>("catFood")
Expand All @@ -63,6 +58,7 @@ class ReviewActivity : BindingActivity<ActivityReviewBinding>(R.layout.activity_
reviewViewModel.getTags()
imageSliderAdapter = CatFoodSliderAdapter()
initSetting(initCatFoodData)
addCheckBoxView()
}

private fun initSetting(catFood: ResponseSearch.Data) {
Expand All @@ -77,11 +73,11 @@ class ReviewActivity : BindingActivity<ActivityReviewBinding>(R.layout.activity_

private fun setUIListener(catFood: ResponseSearch.Data) {
binding.imgReviewBack.setOnClickListener { finish() }
binding.ratingRecordPreference.setOnRatingChangeListener {
reviewViewModel.preference = it
binding.btnSubmit.isEnabled = true
binding.txtRecordPreferenceExplain.text = Comment.of(it.toInt())
}
// binding.ratingRecordPreference.setOnRatingChangeListener {
// reviewViewModel.preference = it
// binding.btnSubmit.isEnabled = true
// binding.txtRecordPreferenceExplain.text = Comment.of(it.toInt())
// }
binding.imgRecordAddImage.setOnClickListener {
TedImagePicker.with(this)
.start { uri ->
Expand Down Expand Up @@ -139,7 +135,7 @@ class ReviewActivity : BindingActivity<ActivityReviewBinding>(R.layout.activity_
}

private fun String.toChip(): Chip =
ChipFactory.create(layoutInflater).also { it.text = this }
ChipClient.create(layoutInflater).also { it.text = this }

private fun chipCheckedChangeListener(): CompoundButton.OnCheckedChangeListener {
return CompoundButton.OnCheckedChangeListener { compoundButton, checked ->
Expand Down Expand Up @@ -175,5 +171,29 @@ class ReviewActivity : BindingActivity<ActivityReviewBinding>(R.layout.activity_

}

/** Add CheckBox View */
private fun addCheckBoxView() {
preferenceCheckBoxList.run {
add(binding.checkboxPreference1)
add(binding.checkboxPreference2)
add(binding.checkboxPreference3)
add(binding.checkboxPreference4)
add(binding.checkboxPreference5)
}
}


fun onClickPreferenceCheckBox(preference: Int?) {
if (preference == null || preferenceCheckBoxList.size < preference)
return

reviewViewModel.preference = preference.toFloat()
binding.btnSubmit.isEnabled = true
binding.txtRecordPreferenceExplain.text = Comment.of(preference)

preferenceCheckBoxList.forEachIndexed { index, checkBox ->
checkBox.isChecked = index < preference
}
}

}
Loading

0 comments on commit 7214f34

Please sign in to comment.