From ce2a67cc009878a2c87b74792c69f02f188f4bdb Mon Sep 17 00:00:00 2001 From: Sangho Kim Date: Fri, 14 Jun 2024 01:23:46 +0900 Subject: [PATCH 1/5] =?UTF-8?q?[UI/#13]=20confirm=20=EB=B7=B0=20=EC=83=81?= =?UTF-8?q?=EB=8B=A8=20UI=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../buy/confirm/BuyConfirmActivity.kt | 2 + .../presentation/detail/OptionBottomSheet.kt | 7 + .../src/main/res/drawable/ic_exit.xml | 9 + .../drawable/shape_gray2_dash_line_5_rect.xml | 8 + .../res/drawable/shape_gray3_line_5_rect.xml | 6 + .../main/res/layout/activity_buy_confirm.xml | 182 ++++++++++++++++++ presentation/src/main/res/values/strings.xml | 2 + 7 files changed, 216 insertions(+) create mode 100644 presentation/src/main/java/co/orange/presentation/buy/confirm/BuyConfirmActivity.kt create mode 100644 presentation/src/main/res/drawable/ic_exit.xml create mode 100644 presentation/src/main/res/drawable/shape_gray2_dash_line_5_rect.xml create mode 100644 presentation/src/main/res/drawable/shape_gray3_line_5_rect.xml create mode 100644 presentation/src/main/res/layout/activity_buy_confirm.xml diff --git a/presentation/src/main/java/co/orange/presentation/buy/confirm/BuyConfirmActivity.kt b/presentation/src/main/java/co/orange/presentation/buy/confirm/BuyConfirmActivity.kt new file mode 100644 index 00000000..7fcd3193 --- /dev/null +++ b/presentation/src/main/java/co/orange/presentation/buy/confirm/BuyConfirmActivity.kt @@ -0,0 +1,2 @@ +package co.orange.presentation.buy.confirm + diff --git a/presentation/src/main/java/co/orange/presentation/detail/OptionBottomSheet.kt b/presentation/src/main/java/co/orange/presentation/detail/OptionBottomSheet.kt index 60159b8d..97369992 100644 --- a/presentation/src/main/java/co/orange/presentation/detail/OptionBottomSheet.kt +++ b/presentation/src/main/java/co/orange/presentation/detail/OptionBottomSheet.kt @@ -29,6 +29,7 @@ class OptionBottomSheet : super.onViewCreated(view, savedInstanceState) initDetailViewBtnListener() + initPurchaseBtnListener() initAdapter() setInterestCount() setOptionData() @@ -42,6 +43,12 @@ class OptionBottomSheet : } } + private fun initPurchaseBtnListener() { + binding.btnPurchase.setOnSingleClickListener { + // TODO (버튼 활성화도 설정) + } + } + private fun initAdapter() { _adapter = OptionAdapter( itemClick = ::initItemClickListener, diff --git a/presentation/src/main/res/drawable/ic_exit.xml b/presentation/src/main/res/drawable/ic_exit.xml new file mode 100644 index 00000000..5fedf8e2 --- /dev/null +++ b/presentation/src/main/res/drawable/ic_exit.xml @@ -0,0 +1,9 @@ + + + diff --git a/presentation/src/main/res/drawable/shape_gray2_dash_line_5_rect.xml b/presentation/src/main/res/drawable/shape_gray2_dash_line_5_rect.xml new file mode 100644 index 00000000..094ce75c --- /dev/null +++ b/presentation/src/main/res/drawable/shape_gray2_dash_line_5_rect.xml @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git a/presentation/src/main/res/drawable/shape_gray3_line_5_rect.xml b/presentation/src/main/res/drawable/shape_gray3_line_5_rect.xml new file mode 100644 index 00000000..829317b0 --- /dev/null +++ b/presentation/src/main/res/drawable/shape_gray3_line_5_rect.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/presentation/src/main/res/layout/activity_buy_confirm.xml b/presentation/src/main/res/layout/activity_buy_confirm.xml new file mode 100644 index 00000000..ecdfe65c --- /dev/null +++ b/presentation/src/main/res/layout/activity_buy_confirm.xml @@ -0,0 +1,182 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/presentation/src/main/res/values/strings.xml b/presentation/src/main/res/values/strings.xml index ec54e386..02e2092a 100644 --- a/presentation/src/main/res/values/strings.xml +++ b/presentation/src/main/res/values/strings.xml @@ -32,4 +32,6 @@ 원하는 옵션을 선택해주세요 *각인 옵션은 사용할 수 없습니다. + + 구매하기 \ No newline at end of file From 1f251b29738dd4108300106db91685e27f3c0255 Mon Sep 17 00:00:00 2001 From: Sangho Kim Date: Fri, 14 Jun 2024 01:56:58 +0900 Subject: [PATCH 2/5] =?UTF-8?q?[UI/#13]=20confirm=20=EB=B7=B0=20UI=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../res/drawable/ic_check_term_selected.xml | 9 + .../res/drawable/ic_check_term_unselected.xml | 9 + .../src/main/res/drawable/sel_term_check.xml | 5 + .../res/drawable/shape_gray1_line_5_rect.xml | 6 + .../main/res/layout/activity_buy_confirm.xml | 235 +++++++++++++++++- presentation/src/main/res/values/colors.xml | 1 + 6 files changed, 264 insertions(+), 1 deletion(-) create mode 100644 presentation/src/main/res/drawable/ic_check_term_selected.xml create mode 100644 presentation/src/main/res/drawable/ic_check_term_unselected.xml create mode 100644 presentation/src/main/res/drawable/sel_term_check.xml create mode 100644 presentation/src/main/res/drawable/shape_gray1_line_5_rect.xml diff --git a/presentation/src/main/res/drawable/ic_check_term_selected.xml b/presentation/src/main/res/drawable/ic_check_term_selected.xml new file mode 100644 index 00000000..d2836e87 --- /dev/null +++ b/presentation/src/main/res/drawable/ic_check_term_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/presentation/src/main/res/drawable/ic_check_term_unselected.xml b/presentation/src/main/res/drawable/ic_check_term_unselected.xml new file mode 100644 index 00000000..498d5bef --- /dev/null +++ b/presentation/src/main/res/drawable/ic_check_term_unselected.xml @@ -0,0 +1,9 @@ + + + diff --git a/presentation/src/main/res/drawable/sel_term_check.xml b/presentation/src/main/res/drawable/sel_term_check.xml new file mode 100644 index 00000000..8bebcd13 --- /dev/null +++ b/presentation/src/main/res/drawable/sel_term_check.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/presentation/src/main/res/drawable/shape_gray1_line_5_rect.xml b/presentation/src/main/res/drawable/shape_gray1_line_5_rect.xml new file mode 100644 index 00000000..0e5a6c45 --- /dev/null +++ b/presentation/src/main/res/drawable/shape_gray1_line_5_rect.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/presentation/src/main/res/layout/activity_buy_confirm.xml b/presentation/src/main/res/layout/activity_buy_confirm.xml index ecdfe65c..b80c99f1 100644 --- a/presentation/src/main/res/layout/activity_buy_confirm.xml +++ b/presentation/src/main/res/layout/activity_buy_confirm.xml @@ -49,7 +49,7 @@ android:id="@+id/sv_confirm" android:layout_width="0dp" android:layout_height="0dp" - app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintBottom_toBottomOf="@id/border_confirm_purchase" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/layout_confirm_top"> @@ -173,10 +173,243 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/layout_confirm_pay_empty" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/presentation/src/main/res/values/colors.xml b/presentation/src/main/res/values/colors.xml index 55669040..3089f0d2 100644 --- a/presentation/src/main/res/values/colors.xml +++ b/presentation/src/main/res/values/colors.xml @@ -19,6 +19,7 @@ #FFFEE500 #AFB1B6 #3527D7 + #FF002E #00000000 From 7ec8f15cf65589c523ff1d506769fc539f7a9d0d Mon Sep 17 00:00:00 2001 From: Sangho Kim Date: Fri, 14 Jun 2024 09:36:12 +0900 Subject: [PATCH 3/5] =?UTF-8?q?[FEAT/#13]=20=EA=B5=AC=EB=A7=A4=EB=B7=B0=20?= =?UTF-8?q?=EC=9D=B8=ED=85=90=ED=8A=B8=20=EC=97=B0=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../buy/confirm/BuyConfirmActivity.kt | 73 +++++++++++++++++++ .../buy/confirm/BuyConfirmViewModel.kt | 19 +++++ .../presentation/detail/DetailActivity.kt | 13 +++- .../presentation/detail/DetailViewModel.kt | 4 + .../presentation/detail/OptionBottomSheet.kt | 12 ++- 5 files changed, 116 insertions(+), 5 deletions(-) create mode 100644 presentation/src/main/java/co/orange/presentation/buy/confirm/BuyConfirmViewModel.kt diff --git a/presentation/src/main/java/co/orange/presentation/buy/confirm/BuyConfirmActivity.kt b/presentation/src/main/java/co/orange/presentation/buy/confirm/BuyConfirmActivity.kt index 7fcd3193..6b90653b 100644 --- a/presentation/src/main/java/co/orange/presentation/buy/confirm/BuyConfirmActivity.kt +++ b/presentation/src/main/java/co/orange/presentation/buy/confirm/BuyConfirmActivity.kt @@ -1,2 +1,75 @@ package co.orange.presentation.buy.confirm +import android.content.Context +import android.content.Intent +import android.graphics.Paint +import android.os.Bundle +import androidx.activity.viewModels +import coil.load +import dagger.hilt.android.AndroidEntryPoint +import kr.genti.core.base.BaseActivity +import kr.genti.core.extension.setNumberForm +import kr.genti.presentation.R +import kr.genti.presentation.databinding.ActivityBuyConfirmBinding + +@AndroidEntryPoint +class BuyConfirmActivity : BaseActivity(R.layout.activity_buy_confirm) { + private val viewModel by viewModels() + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + getIntentInfo() + setIntentUi() + } + + private fun getIntentInfo() { + with(viewModel) { + imageUrl = intent.getStringExtra(EXTRA_PRODUCT_URL).orEmpty() + originPrice = intent.getIntExtra(EXTRA_ORIGIN_PRICE, 0) + detailPrice = intent.getIntExtra(EXTRA_SALE_PRICE, 0) + name = intent.getStringExtra(EXTRA_NAME).orEmpty() + } + } + + private fun setIntentUi() { + with(binding) { + tvConfirmProductName.text = viewModel.name + ivConfirmProduct.load(viewModel.imageUrl) + tvConfirmProductPrice.apply { + text = viewModel.originPrice.setNumberForm() + setPaintFlags(Paint.STRIKE_THRU_TEXT_FLAG) + } + tvConfirmPriceMoney.apply { + text = viewModel.originPrice.setNumberForm() + setPaintFlags(Paint.STRIKE_THRU_TEXT_FLAG) + } + // TODO + tvConfirmPriceDiscount.text = "-3,000" + tvConfirmPriceCharge.text = "+350" + tvConfirmPriceTotal.text = "21,350" + } + } + + + companion object { + private const val EXTRA_PRODUCT_URL = "EXTRA_PRODUCT_URL" + private const val EXTRA_ORIGIN_PRICE = "EXTRA_ORIGIN_PRICE" + private const val EXTRA_SALE_PRICE = "EXTRA_SALE_PRICE" + private const val EXTRA_NAME = "EXTRA_NAME" + + @JvmStatic + fun createIntent( + context: Context, + productUrl: String, + originPrice: Int, + salePrice: Int, + name: String + ): Intent = Intent(context, BuyConfirmActivity::class.java).apply { + putExtra(EXTRA_PRODUCT_URL, productUrl) + putExtra(EXTRA_ORIGIN_PRICE, originPrice) + putExtra(EXTRA_SALE_PRICE, salePrice) + putExtra(EXTRA_NAME, name) + } + } +} \ No newline at end of file diff --git a/presentation/src/main/java/co/orange/presentation/buy/confirm/BuyConfirmViewModel.kt b/presentation/src/main/java/co/orange/presentation/buy/confirm/BuyConfirmViewModel.kt new file mode 100644 index 00000000..eb4b8ebc --- /dev/null +++ b/presentation/src/main/java/co/orange/presentation/buy/confirm/BuyConfirmViewModel.kt @@ -0,0 +1,19 @@ +package co.orange.presentation.buy.confirm + +import androidx.lifecycle.ViewModel +import dagger.hilt.android.lifecycle.HiltViewModel +import javax.inject.Inject + +@HiltViewModel +class BuyConfirmViewModel +@Inject +constructor( + // private val feedRepository: FeedRepository, +) : ViewModel() { + + var imageUrl: String = "" + var originPrice: Int = 0 + var detailPrice: Int = 0 + var name: String = "" + +} \ No newline at end of file diff --git a/presentation/src/main/java/co/orange/presentation/detail/DetailActivity.kt b/presentation/src/main/java/co/orange/presentation/detail/DetailActivity.kt index 6a189dfd..8f989e3c 100644 --- a/presentation/src/main/java/co/orange/presentation/detail/DetailActivity.kt +++ b/presentation/src/main/java/co/orange/presentation/detail/DetailActivity.kt @@ -62,13 +62,18 @@ class DetailActivity : BaseActivity(R.layout.activity_det } private fun getIntentInfo() { + with(viewModel) { + imageUrl = intent.getStringExtra(EXTRA_PRODUCT_URL).orEmpty() + originPrice = intent.getIntExtra(EXTRA_ORIGIN_PRICE, 0) + salePrice = intent.getIntExtra(EXTRA_SALE_PRICE, 0) + } with(binding) { - ivDetailProduct.load(intent.getStringExtra(EXTRA_PRODUCT_URL)) + ivDetailProduct.load(viewModel.imageUrl) tvDetailRealPrice.apply { - text = intent.getIntExtra(EXTRA_ORIGIN_PRICE, 0).setNumberForm() + text = viewModel.originPrice.setNumberForm() setPaintFlags(Paint.STRIKE_THRU_TEXT_FLAG) } - tvDetailNowPrice.text = intent.getIntExtra(EXTRA_SALE_PRICE, 0).setNumberForm() + tvDetailNowPrice.text = viewModel.salePrice.setNumberForm() } } @@ -107,7 +112,7 @@ class DetailActivity : BaseActivity(R.layout.activity_det context: Context, productUrl: String, originPrice: Int, - salePrice: Int + salePrice: Int, ): Intent = Intent(context, DetailActivity::class.java).apply { putExtra(EXTRA_PRODUCT_URL, productUrl) putExtra(EXTRA_ORIGIN_PRICE, originPrice) diff --git a/presentation/src/main/java/co/orange/presentation/detail/DetailViewModel.kt b/presentation/src/main/java/co/orange/presentation/detail/DetailViewModel.kt index a7502ff9..95d0c8f1 100644 --- a/presentation/src/main/java/co/orange/presentation/detail/DetailViewModel.kt +++ b/presentation/src/main/java/co/orange/presentation/detail/DetailViewModel.kt @@ -12,6 +12,10 @@ class DetailViewModel constructor( // private val feedRepository: FeedRepository, ) : ViewModel() { + var imageUrl: String = "" + var originPrice: Int = 0 + var salePrice: Int = 0 + val mockProduct = ProductDetailModel( "퓨어 오일 퍼퓸 10 ml 긴제목테스트트트트트", "카테고리", diff --git a/presentation/src/main/java/co/orange/presentation/detail/OptionBottomSheet.kt b/presentation/src/main/java/co/orange/presentation/detail/OptionBottomSheet.kt index 97369992..b17ea82f 100644 --- a/presentation/src/main/java/co/orange/presentation/detail/OptionBottomSheet.kt +++ b/presentation/src/main/java/co/orange/presentation/detail/OptionBottomSheet.kt @@ -5,6 +5,7 @@ import android.net.Uri import android.os.Bundle import android.view.View import androidx.fragment.app.activityViewModels +import co.orange.presentation.buy.confirm.BuyConfirmActivity import co.orange.presentation.main.home.HomeProductViewHolder.Companion.OVER_999 import kr.genti.core.base.BaseBottomSheet import kr.genti.core.extension.setOnSingleClickListener @@ -45,7 +46,16 @@ class OptionBottomSheet : private fun initPurchaseBtnListener() { binding.btnPurchase.setOnSingleClickListener { - // TODO (버튼 활성화도 설정) + // TODO 버튼 활성화 설정 + BuyConfirmActivity.createIntent( + requireContext(), + viewModel.imageUrl, + viewModel.originPrice, + viewModel.salePrice, + viewModel.mockProduct.name + ).apply { + startActivity(this) + } } } From 538cca5d4c6f5e3bcdca2cb0d95a23fc7f82a616 Mon Sep 17 00:00:00 2001 From: Sangho Kim Date: Fri, 14 Jun 2024 09:37:00 +0900 Subject: [PATCH 4/5] =?UTF-8?q?[ADD/#13]=20=EA=B5=AC=EB=A7=A4=EC=A7=84?= =?UTF-8?q?=ED=96=89=EB=B7=B0=20manifest=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 035f6249..0b4ff4e2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -31,6 +31,11 @@ android:exported="false" android:screenOrientation="portrait" /> + + \ No newline at end of file From 8ee6893dcf84d72d59b5b8e916fe5412a249b1df Mon Sep 17 00:00:00 2001 From: Sangho Kim Date: Fri, 14 Jun 2024 09:57:32 +0900 Subject: [PATCH 5/5] =?UTF-8?q?[FEAT/#13]=20=EA=B5=AC=EB=A7=A4=EB=B7=B0=20?= =?UTF-8?q?=EB=A6=AC=EC=8A=A4=EB=84=88=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../buy/confirm/BuyConfirmActivity.kt | 40 ++++++++++++++----- .../buy/confirm/BuyConfirmViewModel.kt | 2 +- 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/presentation/src/main/java/co/orange/presentation/buy/confirm/BuyConfirmActivity.kt b/presentation/src/main/java/co/orange/presentation/buy/confirm/BuyConfirmActivity.kt index 6b90653b..f4d45727 100644 --- a/presentation/src/main/java/co/orange/presentation/buy/confirm/BuyConfirmActivity.kt +++ b/presentation/src/main/java/co/orange/presentation/buy/confirm/BuyConfirmActivity.kt @@ -2,13 +2,13 @@ package co.orange.presentation.buy.confirm import android.content.Context import android.content.Intent -import android.graphics.Paint import android.os.Bundle import androidx.activity.viewModels import coil.load import dagger.hilt.android.AndroidEntryPoint import kr.genti.core.base.BaseActivity import kr.genti.core.extension.setNumberForm +import kr.genti.core.extension.setOnSingleClickListener import kr.genti.presentation.R import kr.genti.presentation.databinding.ActivityBuyConfirmBinding @@ -19,15 +19,41 @@ class BuyConfirmActivity : BaseActivity(R.layout.acti override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + initExitBtnListener() + initDeliveryChangeBtnListener() + initTermBtnListener() + initConfirmBtnListener() getIntentInfo() setIntentUi() } + private fun initExitBtnListener() { + binding.btnExit.setOnSingleClickListener { finish() } + } + + private fun initDeliveryChangeBtnListener() { + // TODO + binding.btnChangeDelivery.setOnSingleClickListener { } + } + + private fun initTermBtnListener() { + //TODO + binding.btnTermAll.setOnSingleClickListener { } + binding.btnTermFirst.setOnSingleClickListener { } + binding.btnTermSecond.setOnSingleClickListener { } + binding.btnTermThird.setOnSingleClickListener { } + } + + private fun initConfirmBtnListener() { + // TODO + binding.btnConfirmPurchase.setOnSingleClickListener { } + } + private fun getIntentInfo() { with(viewModel) { imageUrl = intent.getStringExtra(EXTRA_PRODUCT_URL).orEmpty() originPrice = intent.getIntExtra(EXTRA_ORIGIN_PRICE, 0) - detailPrice = intent.getIntExtra(EXTRA_SALE_PRICE, 0) + salePrice = intent.getIntExtra(EXTRA_SALE_PRICE, 0) name = intent.getStringExtra(EXTRA_NAME).orEmpty() } } @@ -36,14 +62,8 @@ class BuyConfirmActivity : BaseActivity(R.layout.acti with(binding) { tvConfirmProductName.text = viewModel.name ivConfirmProduct.load(viewModel.imageUrl) - tvConfirmProductPrice.apply { - text = viewModel.originPrice.setNumberForm() - setPaintFlags(Paint.STRIKE_THRU_TEXT_FLAG) - } - tvConfirmPriceMoney.apply { - text = viewModel.originPrice.setNumberForm() - setPaintFlags(Paint.STRIKE_THRU_TEXT_FLAG) - } + tvConfirmProductPrice.text = viewModel.salePrice.setNumberForm() + tvConfirmPriceMoney.text = viewModel.salePrice.setNumberForm() // TODO tvConfirmPriceDiscount.text = "-3,000" tvConfirmPriceCharge.text = "+350" diff --git a/presentation/src/main/java/co/orange/presentation/buy/confirm/BuyConfirmViewModel.kt b/presentation/src/main/java/co/orange/presentation/buy/confirm/BuyConfirmViewModel.kt index eb4b8ebc..d3ad63d3 100644 --- a/presentation/src/main/java/co/orange/presentation/buy/confirm/BuyConfirmViewModel.kt +++ b/presentation/src/main/java/co/orange/presentation/buy/confirm/BuyConfirmViewModel.kt @@ -13,7 +13,7 @@ constructor( var imageUrl: String = "" var originPrice: Int = 0 - var detailPrice: Int = 0 + var salePrice: Int = 0 var name: String = "" } \ No newline at end of file