From bd7b6cec17197f7d43dc383660a27b5015ebd934 Mon Sep 17 00:00:00 2001 From: pump9918 Date: Fri, 12 Jan 2024 00:33:05 +0900 Subject: [PATCH 01/18] =?UTF-8?q?#39=20[chore]=20happyroutine=20=ED=8C=A8?= =?UTF-8?q?=ED=82=A4=EC=A7=80=20=EC=9E=AC=EB=B0=B0=EC=B9=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 11 ++++++----- .../happy => happyroutine}/HappyRoutineFragment.kt | 2 +- .../addlist/HappyAddListActivity.kt | 2 +- .../addlist/HappyAddListChipContentAdapter.kt | 2 +- .../addlist/HappyAddListContentAdapter.kt | 2 +- .../addlist/HappyAddListViewModel.kt | 2 +- .../java/com/sopetit/softie/ui/main/MainActivity.kt | 2 +- 7 files changed, 12 insertions(+), 11 deletions(-) rename app/src/main/java/com/sopetit/softie/ui/{main/happy => happyroutine}/HappyRoutineFragment.kt (91%) rename app/src/main/java/com/sopetit/softie/ui/{main/happy => happyroutine}/addlist/HappyAddListActivity.kt (98%) rename app/src/main/java/com/sopetit/softie/ui/{main/happy => happyroutine}/addlist/HappyAddListChipContentAdapter.kt (97%) rename app/src/main/java/com/sopetit/softie/ui/{main/happy => happyroutine}/addlist/HappyAddListContentAdapter.kt (97%) rename app/src/main/java/com/sopetit/softie/ui/{main/happy => happyroutine}/addlist/HappyAddListViewModel.kt (99%) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 0a2fa175..bb72fc7e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -36,9 +36,15 @@ android:name=".ui.storytelling.StoryTellingActivity" android:exported="false" android:screenOrientation="portrait"> + + + @@ -47,11 +53,6 @@ - - Date: Fri, 12 Jan 2024 17:02:36 +0900 Subject: [PATCH 02/18] =?UTF-8?q?#39=20[ui]=20=ED=96=89=EB=B3=B5=20?= =?UTF-8?q?=EB=A3=A8=ED=8B=B4=20=EC=B6=94=EA=B0=80(=EC=83=81=EC=84=B8)=20d?= =?UTF-8?q?rawable=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../drawable/ic_daily_theme_background.xml | 11 ++ .../ic_daily_theme_background_click.xml | 11 ++ .../main/res/drawable/ic_happy_bling_blue.xml | 9 ++ .../res/drawable/ic_happy_bling_green.xml | 9 ++ .../res/drawable/ic_happy_bling_orange.xml | 9 ++ .../res/drawable/ic_happy_bling_purple.xml | 9 ++ .../main/res/drawable/ic_happy_bling_red.xml | 9 ++ .../res/drawable/ic_happycard_up_blue.xml | 111 ++++++++++++++++++ .../res/drawable/ic_happycard_up_green.xml | 108 +++++++++++++++++ .../res/drawable/ic_happycard_up_orange.xml | 108 +++++++++++++++++ .../res/drawable/ic_happycard_up_purple.xml | 108 +++++++++++++++++ .../main/res/drawable/ic_happycard_up_red.xml | 108 +++++++++++++++++ app/src/main/res/drawable/ic_magnify.xml | 10 ++ app/src/main/res/drawable/ic_place.xml | 13 ++ app/src/main/res/drawable/ic_time.xml | 13 ++ app/src/main/res/drawable/ic_transfer.xml | 13 ++ .../res/drawable/shape_black_fill_12_rect.xml | 10 ++ app/src/main/res/values/strings.xml | 5 + 18 files changed, 674 insertions(+) create mode 100644 app/src/main/res/drawable/ic_daily_theme_background.xml create mode 100644 app/src/main/res/drawable/ic_daily_theme_background_click.xml create mode 100644 app/src/main/res/drawable/ic_happy_bling_blue.xml create mode 100644 app/src/main/res/drawable/ic_happy_bling_green.xml create mode 100644 app/src/main/res/drawable/ic_happy_bling_orange.xml create mode 100644 app/src/main/res/drawable/ic_happy_bling_purple.xml create mode 100644 app/src/main/res/drawable/ic_happy_bling_red.xml create mode 100644 app/src/main/res/drawable/ic_happycard_up_blue.xml create mode 100644 app/src/main/res/drawable/ic_happycard_up_green.xml create mode 100644 app/src/main/res/drawable/ic_happycard_up_orange.xml create mode 100644 app/src/main/res/drawable/ic_happycard_up_purple.xml create mode 100644 app/src/main/res/drawable/ic_happycard_up_red.xml create mode 100644 app/src/main/res/drawable/ic_magnify.xml create mode 100644 app/src/main/res/drawable/ic_place.xml create mode 100644 app/src/main/res/drawable/ic_time.xml create mode 100644 app/src/main/res/drawable/ic_transfer.xml create mode 100644 app/src/main/res/drawable/shape_black_fill_12_rect.xml diff --git a/app/src/main/res/drawable/ic_daily_theme_background.xml b/app/src/main/res/drawable/ic_daily_theme_background.xml new file mode 100644 index 00000000..5881e898 --- /dev/null +++ b/app/src/main/res/drawable/ic_daily_theme_background.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/main/res/drawable/ic_daily_theme_background_click.xml b/app/src/main/res/drawable/ic_daily_theme_background_click.xml new file mode 100644 index 00000000..4b560be9 --- /dev/null +++ b/app/src/main/res/drawable/ic_daily_theme_background_click.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/main/res/drawable/ic_happy_bling_blue.xml b/app/src/main/res/drawable/ic_happy_bling_blue.xml new file mode 100644 index 00000000..f177b2d5 --- /dev/null +++ b/app/src/main/res/drawable/ic_happy_bling_blue.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_happy_bling_green.xml b/app/src/main/res/drawable/ic_happy_bling_green.xml new file mode 100644 index 00000000..c937d095 --- /dev/null +++ b/app/src/main/res/drawable/ic_happy_bling_green.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_happy_bling_orange.xml b/app/src/main/res/drawable/ic_happy_bling_orange.xml new file mode 100644 index 00000000..623252de --- /dev/null +++ b/app/src/main/res/drawable/ic_happy_bling_orange.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_happy_bling_purple.xml b/app/src/main/res/drawable/ic_happy_bling_purple.xml new file mode 100644 index 00000000..13a44f54 --- /dev/null +++ b/app/src/main/res/drawable/ic_happy_bling_purple.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_happy_bling_red.xml b/app/src/main/res/drawable/ic_happy_bling_red.xml new file mode 100644 index 00000000..31116965 --- /dev/null +++ b/app/src/main/res/drawable/ic_happy_bling_red.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_happycard_up_blue.xml b/app/src/main/res/drawable/ic_happycard_up_blue.xml new file mode 100644 index 00000000..0bf4bddc --- /dev/null +++ b/app/src/main/res/drawable/ic_happycard_up_blue.xml @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_happycard_up_green.xml b/app/src/main/res/drawable/ic_happycard_up_green.xml new file mode 100644 index 00000000..90b23150 --- /dev/null +++ b/app/src/main/res/drawable/ic_happycard_up_green.xml @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_happycard_up_orange.xml b/app/src/main/res/drawable/ic_happycard_up_orange.xml new file mode 100644 index 00000000..d22f292b --- /dev/null +++ b/app/src/main/res/drawable/ic_happycard_up_orange.xml @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_happycard_up_purple.xml b/app/src/main/res/drawable/ic_happycard_up_purple.xml new file mode 100644 index 00000000..05780e9e --- /dev/null +++ b/app/src/main/res/drawable/ic_happycard_up_purple.xml @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_happycard_up_red.xml b/app/src/main/res/drawable/ic_happycard_up_red.xml new file mode 100644 index 00000000..2d8432a2 --- /dev/null +++ b/app/src/main/res/drawable/ic_happycard_up_red.xml @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_magnify.xml b/app/src/main/res/drawable/ic_magnify.xml new file mode 100644 index 00000000..622d77e1 --- /dev/null +++ b/app/src/main/res/drawable/ic_magnify.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_place.xml b/app/src/main/res/drawable/ic_place.xml new file mode 100644 index 00000000..e8db0e7c --- /dev/null +++ b/app/src/main/res/drawable/ic_place.xml @@ -0,0 +1,13 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_time.xml b/app/src/main/res/drawable/ic_time.xml new file mode 100644 index 00000000..763f26aa --- /dev/null +++ b/app/src/main/res/drawable/ic_time.xml @@ -0,0 +1,13 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_transfer.xml b/app/src/main/res/drawable/ic_transfer.xml new file mode 100644 index 00000000..60130b40 --- /dev/null +++ b/app/src/main/res/drawable/ic_transfer.xml @@ -0,0 +1,13 @@ + + + + + + diff --git a/app/src/main/res/drawable/shape_black_fill_12_rect.xml b/app/src/main/res/drawable/shape_black_fill_12_rect.xml new file mode 100644 index 00000000..4ef3683d --- /dev/null +++ b/app/src/main/res/drawable/shape_black_fill_12_rect.xml @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ab5cead9..3e1166c9 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -31,6 +31,11 @@ 마음 챙김 성숙한 사랑을 만나기 위한 + + 관계 쌓기 + 성숙한 사랑을 만나기 위한 + 이 루틴을 추가할래 + 어떤 친구와 함께 할까요? 한 번 선택한 인형은 바꿀 수 없어요 From b4a1f9af4ed04ca8adf7354472ce292a3d9253c0 Mon Sep 17 00:00:00 2001 From: pump9918 Date: Fri, 12 Jan 2024 23:02:40 +0900 Subject: [PATCH 03/18] =?UTF-8?q?#39=20[ui]=20=ED=96=89=EB=B3=B5=20?= =?UTF-8?q?=EB=A3=A8=ED=8B=B4=20=EC=B6=94=EA=B0=80(=EC=83=81=EC=84=B8)=20?= =?UTF-8?q?=EB=B7=B0=20=EC=9E=91=EC=97=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...hape_white_fill_gray100_stroke_20_rect.xml | 9 +- .../res/layout/activity_happy_add_detail.xml | 103 ++++++++++++++++++ .../res/layout/item_happy_add_detail_card.xml | 50 +++++++++ app/src/main/res/values/strings.xml | 4 + 4 files changed, 162 insertions(+), 4 deletions(-) create mode 100644 app/src/main/res/layout/activity_happy_add_detail.xml create mode 100644 app/src/main/res/layout/item_happy_add_detail_card.xml diff --git a/app/src/main/res/drawable/shape_white_fill_gray100_stroke_20_rect.xml b/app/src/main/res/drawable/shape_white_fill_gray100_stroke_20_rect.xml index 75828ed1..16ff59e9 100644 --- a/app/src/main/res/drawable/shape_white_fill_gray100_stroke_20_rect.xml +++ b/app/src/main/res/drawable/shape_white_fill_gray100_stroke_20_rect.xml @@ -2,9 +2,10 @@ - - - + + + diff --git a/app/src/main/res/layout/activity_happy_add_detail.xml b/app/src/main/res/layout/activity_happy_add_detail.xml new file mode 100644 index 00000000..a631a54c --- /dev/null +++ b/app/src/main/res/layout/activity_happy_add_detail.xml @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/item_happy_add_detail_card.xml b/app/src/main/res/layout/item_happy_add_detail_card.xml new file mode 100644 index 00000000..29cca69e --- /dev/null +++ b/app/src/main/res/layout/item_happy_add_detail_card.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3e1166c9..e78a5440 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -35,6 +35,10 @@ 관계 쌓기 성숙한 사랑을 만나기 위한 이 루틴을 추가할래 + 이상형의 특성 10가지 적어보고,\n절대 포기 못할 2가지와\n나와 비슷한 3가지 찾아보기 + 평소에 바빠서 연락하지 못한 사람이 있다면 안부인사 개인톡을 보내 봐. 꼭 만나서 밥을 먹거나 하지 않아도 연락 한 통이 나와 그 사람을 연결하는 방법이 될 수 있어 + 5~10분 + 회사 옥상, 점심식사 후 돌아가는 길 어떤 친구와 함께 할까요? From e33dcc2d7ec3ed01c1df49b04daa948990572494 Mon Sep 17 00:00:00 2001 From: pump9918 Date: Fri, 12 Jan 2024 23:03:17 +0900 Subject: [PATCH 04/18] =?UTF-8?q?#39=20[ui]=20=EC=B9=B4=EB=93=9C=20?= =?UTF-8?q?=EB=B0=8F=20=EC=83=81=EC=84=B8=ED=8E=98=EC=9D=B4=EC=A7=80=20?= =?UTF-8?q?=EB=8D=B0=EC=9D=B4=ED=84=B0=20=ED=81=B4=EB=9E=98=EC=8A=A4=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sopetit/softie/domain/entity/HappyCard.kt | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 app/src/main/java/com/sopetit/softie/domain/entity/HappyCard.kt diff --git a/app/src/main/java/com/sopetit/softie/domain/entity/HappyCard.kt b/app/src/main/java/com/sopetit/softie/domain/entity/HappyCard.kt new file mode 100644 index 00000000..5910e652 --- /dev/null +++ b/app/src/main/java/com/sopetit/softie/domain/entity/HappyCard.kt @@ -0,0 +1,21 @@ +package com.sopetit.softie.domain.entity + +import androidx.annotation.DrawableRes + +data class HappyCard( + val name: String, + val nameColor: String, + val title: String, + @DrawableRes val iconImageUrl: Int, + val routines: List +) { + data class Routines( + val routineId: Int, + @DrawableRes val cardImageUrl: Int, + val content: String, + val detailTitle: String, + val detailContent: String, + val detailTime: String, + val detailPlace: String + ) +} From 73111ed695802494dd0f5b1f15a532852da9f5ad Mon Sep 17 00:00:00 2001 From: pump9918 Date: Fri, 12 Jan 2024 23:04:37 +0900 Subject: [PATCH 05/18] =?UTF-8?q?#39=20[ui]=20=ED=96=89=EB=B3=B5=20?= =?UTF-8?q?=EB=A3=A8=ED=8B=B4=20=EC=83=81=EC=84=B8=20=EB=B7=B0=20=EB=A1=9C?= =?UTF-8?q?=EC=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adddetail/HappyDetailActivity.kt | 105 ++++++++++++++++++ .../adddetail/HappyDetailCardPagerAdapter.kt | 36 ++++++ .../adddetail/HappyDetailCardViewModel.kt | 86 ++++++++++++++ 3 files changed, 227 insertions(+) create mode 100644 app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailActivity.kt create mode 100644 app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailCardPagerAdapter.kt create mode 100644 app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailCardViewModel.kt diff --git a/app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailActivity.kt b/app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailActivity.kt new file mode 100644 index 00000000..ad84aaab --- /dev/null +++ b/app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailActivity.kt @@ -0,0 +1,105 @@ +package com.sopetit.softie.ui.happyroutine.adddetail + +import android.graphics.Color +import android.graphics.Rect +import android.os.Bundle +import android.view.View +import androidx.activity.viewModels +import androidx.recyclerview.widget.RecyclerView +import androidx.viewpager2.widget.CompositePageTransformer +import androidx.viewpager2.widget.ViewPager2 +import com.sopetit.softie.R +import com.sopetit.softie.databinding.ActivityHappyAddDetailBinding +import com.sopetit.softie.util.binding.BindingActivity + +class HappyDetailActivity : + BindingActivity(R.layout.activity_happy_add_detail) { + private lateinit var viewPager: ViewPager2 + private lateinit var happyRoutineAddCardPagerAdapter: HappyDetailCardPagerAdapter + + private val viewModel by viewModels() + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + viewPager = binding.vpHappyAddDetailCard + + setBackEnter() + setupBinding() + setupAdapter() + setIndicator() + initViewPager() + initPagerDiv(0, 90) + } + + private fun setBackEnter() { + binding.ivHappyAddDetailBack.setOnClickListener { + finish() + } + } + + private fun setupBinding() { + val happyCard = viewModel.mockHappyCardList.value?.get(1) + happyCard?.let { + binding.tvHappyAddDetailTitle.text = it.name + binding.ivHappyAddDetailIcon.setImageResource(it.iconImageUrl) + binding.tvHappyAddDetailSubtitle.text = it.title + binding.tvHappyAddDetailTitle.setTextColor(Color.parseColor(it.nameColor)) + } + } + + private fun setupAdapter() { + with(binding) { + happyRoutineAddCardPagerAdapter = HappyDetailCardPagerAdapter() + vpHappyAddDetailCard.adapter = happyRoutineAddCardPagerAdapter + } + happyRoutineAddCardPagerAdapter.submitList(viewModel.mockHappyCardList.value) + } + + private fun setIndicator() { + binding.diHappyAddDetailIndicator.attachTo(binding.vpHappyAddDetailCard) + } + + private fun initViewPager() { + viewPager.adapter = happyRoutineAddCardPagerAdapter + + val dpValue = 40 + val d = resources.displayMetrics.density + val margin = (dpValue * d).toInt() + + with(binding.vpHappyAddDetailCard) { + clipChildren = false + clipToPadding = false + offscreenPageLimit = 3 + setPadding(margin, 0, margin, 0) + } + val compositePageTransformer = CompositePageTransformer() + binding.vpHappyAddDetailCard.setPageTransformer(compositePageTransformer) + } + + private fun initPagerDiv(previewWidth: Int, itemMargin: Int) { + val decoMargin = previewWidth + itemMargin + val pageTransX = decoMargin + previewWidth + val decoration = PageDecoration(decoMargin) + + binding.vpHappyAddDetailCard.also { + it.offscreenPageLimit = 1 + it.addItemDecoration(decoration) + it.setPageTransformer { page, position -> + page.translationX = position * -pageTransX + } + } + } + + private class PageDecoration(private val margin: Int) : RecyclerView.ItemDecoration() { + + override fun getItemOffsets( + outRect: Rect, + view: View, + parent: RecyclerView, + state: RecyclerView.State + ) { + outRect.left = margin + outRect.right = margin + } + } +} diff --git a/app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailCardPagerAdapter.kt b/app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailCardPagerAdapter.kt new file mode 100644 index 00000000..7307bf97 --- /dev/null +++ b/app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailCardPagerAdapter.kt @@ -0,0 +1,36 @@ +package com.sopetit.softie.ui.happyroutine.adddetail + +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.ListAdapter +import androidx.recyclerview.widget.RecyclerView +import com.sopetit.softie.databinding.ItemHappyAddDetailCardBinding +import com.sopetit.softie.domain.entity.HappyCard +import com.sopetit.softie.util.ItemDiffCallback + +class HappyDetailCardPagerAdapter : + ListAdapter( + ItemDiffCallback( + onItemsTheSame = { oldItem, newItem -> oldItem == newItem }, + onContentsTheSame = { oldItem, newItem -> oldItem == newItem } + ) + ) { + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): HappyPagerViewHolder { + val binding = ItemHappyAddDetailCardBinding.inflate( + LayoutInflater.from(parent.context), parent, false + ) + return HappyPagerViewHolder(binding) + } + + override fun onBindViewHolder(holder: HappyPagerViewHolder, position: Int) { + holder.onBind(currentList[position]) + } + + class HappyPagerViewHolder(private val binding: ItemHappyAddDetailCardBinding) : + RecyclerView.ViewHolder(binding.root) { + fun onBind(data: HappyCard) { + binding.ivHappyRoutineAddCard.setImageResource(data.routines[0].cardImageUrl) + binding.tvHappyRoutineAddCardDetailTitle.text = data.routines[0].content + } + } +} diff --git a/app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailCardViewModel.kt b/app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailCardViewModel.kt new file mode 100644 index 00000000..b46f4bd5 --- /dev/null +++ b/app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailCardViewModel.kt @@ -0,0 +1,86 @@ +package com.sopetit.softie.ui.happyroutine.adddetail + +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import com.sopetit.softie.R +import com.sopetit.softie.domain.entity.HappyCard + +class HappyDetailCardViewModel : ViewModel() { + + private val _mockHappyCardList: MutableLiveData> = MutableLiveData( + mutableListOf( + HappyCard( + name = "관계 쌓기", + nameColor = "#CEB59E", + title = "성숙한 사랑을 만나기 위한 행복 루틴", + iconImageUrl = R.drawable.ic_happy_bling_blue, + routines = listOf( + HappyCard.Routines( + routineId = 1, + cardImageUrl = R.drawable.ic_happycard_up_blue, + content = "서점에 가서 랜덤 책 골라서 공중제비 돌기", + detailTitle = "이상형의 특성 10가지 적어보고,\n절대 포기 못할 2가지와\n나와 비슷한 3가지 찾아보기", + detailContent = "평소에 바빠서 연락하지 못한 사람이 있다면 \n안부인사 개인톡을 보내 봐. 꼭 만나서 밥을 \n먹거나 하지 않아도 연락 한 통이 나와 그 사\n람을 연결하는 방법이 될 수 있어", + detailTime = "5~10분", + detailPlace = "회사 옥상, 점심식사 후 돌아가는 길" + ), HappyCard.Routines( + routineId = 2, + cardImageUrl = R.drawable.ic_happycard_up_red, + content = "길가다가 박수치기", + detailTitle = "홍대에서 가장 맛있는\n음식점을 찾아보아요\n나와 비슷한 3가지 찾아보기", + detailContent = "우리나라 좋은나라\n안부인사 개인톡을 보내 봐. 꼭 만나서 밥을 \n먹거나 하지 않아도 연락 한 통이 나와 그 사\n람을 연결하는 방법이 될 수 있어", + detailTime = "6~30분", + detailPlace = "홍대 옥상, 저녁식사 후 돌아가는 길" + ), HappyCard.Routines( + routineId = 3, + cardImageUrl = R.drawable.ic_happycard_up_orange, + content = "클럽에서 짜장면 시키기", + detailTitle = "스포츠몬스터로 가서,\n절대 포기 못할 2가지와\n나와 비슷한 3가지 찾아보기", + detailContent = "살다보면 다 그런거래요 \n안부인사 개인톡을 보내 봐. 꼭 만나서 밥을 \n먹거나 하지 않아도 연락 한 통이 나와 그 사\n람을 연결하는 방법이 될 수 있어", + detailTime = "10~40분", + detailPlace = "일산 킨텍스" + ) + ) + ), + HappyCard( + name = "두 번째 카드", + nameColor = "#FFF27400", + title = "두 번째 카드 제목", + iconImageUrl = R.drawable.ic_happy_bling_purple, + routines = listOf( + HappyCard.Routines( + routineId = 2, + cardImageUrl = R.drawable.ic_happycard_up_purple, + content = "두 번째 카드의 콘텐츠", + detailTitle = "두 번째 카드의 디테일 제목", + detailContent = "두 번째 카드의 디테일 내용", + detailTime = "두 번째 카드의 디테일 시간", + detailPlace = "두 번째 카드의 디테일 장소" + ) + ) + ), + HappyCard( + name = "세 번째 카드", + nameColor = "#FFFFFF", + title = "세 번째 카드 제목", + iconImageUrl = R.drawable.ic_happy_bling_orange, + routines = listOf( + HappyCard.Routines( + routineId = 2, + cardImageUrl = R.drawable.ic_happycard_up_orange, + content = "세 번째 카드의 콘텐츠", + detailTitle = "세 번째 카드의 디테일 제목", + detailContent = "세 번째 카드의 디테일 내용", + detailTime = "세 번째 카드의 디테일 시간", + detailPlace = "세 번째 카드의 디테일 장소" + ) + ) + ), + ) + ) + + val mockHappyCardList: LiveData> + get() = _mockHappyCardList + +} From 93da8529010cf1b8661cbb9da72b060c9b6393f4 Mon Sep 17 00:00:00 2001 From: pump9918 Date: Fri, 12 Jan 2024 23:05:31 +0900 Subject: [PATCH 06/18] =?UTF-8?q?#39=20[chore]=20=ED=96=89=EB=B3=B5=20?= =?UTF-8?q?=EB=A3=A8=ED=8B=B4=20=EB=A6=AC=EC=8A=A4=ED=8A=B8=20=EB=B7=B0?= =?UTF-8?q?=EC=99=80=20=EC=97=B0=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle.kts | 3 +++ .../softie/ui/happyroutine/addlist/HappyAddListActivity.kt | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 5c5f8a9a..78b25424 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -117,6 +117,9 @@ dependencies { // Splash Screen implementation("androidx.core:core-splashscreen:1.0.1") + // indicator + implementation("com.tbuonomo:dotsindicator:5.0") + implementation("androidx.core:core-ktx:1.12.0") implementation("androidx.appcompat:appcompat:1.6.1") implementation("com.google.android.material:material:1.11.0") diff --git a/app/src/main/java/com/sopetit/softie/ui/happyroutine/addlist/HappyAddListActivity.kt b/app/src/main/java/com/sopetit/softie/ui/happyroutine/addlist/HappyAddListActivity.kt index eb19e5ed..336a7dc2 100644 --- a/app/src/main/java/com/sopetit/softie/ui/happyroutine/addlist/HappyAddListActivity.kt +++ b/app/src/main/java/com/sopetit/softie/ui/happyroutine/addlist/HappyAddListActivity.kt @@ -7,7 +7,7 @@ import androidx.recyclerview.widget.RecyclerView import com.sopetit.softie.R import com.sopetit.softie.databinding.ActivityHappyAddListBinding import com.sopetit.softie.domain.entity.HappyContent -import com.sopetit.softie.ui.main.MainActivity +import com.sopetit.softie.ui.happyroutine.adddetail.HappyDetailActivity import com.sopetit.softie.util.HorizontalChipItemDecoration import com.sopetit.softie.util.VerticalItemDecoration import com.sopetit.softie.util.binding.BindingActivity @@ -85,7 +85,7 @@ class HappyAddListActivity : } private fun moveToDetail(id: Int) { - Intent(this, MainActivity::class.java).apply { + Intent(this, HappyDetailActivity::class.java).apply { putExtra(ID, id) startActivity(this) } From 8664ee576b4e0aaab79cb2939479fda5a4237dda Mon Sep 17 00:00:00 2001 From: pump9918 Date: Sat, 13 Jan 2024 00:08:16 +0900 Subject: [PATCH 07/18] =?UTF-8?q?#39=20[ui]=20=EC=B9=B4=EB=93=9C=20?= =?UTF-8?q?=EB=92=B7=ED=8E=B8=20=EB=B7=B0=20xml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../item_happy_add_detail_card_back.xml | 114 ++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 app/src/main/res/layout/item_happy_add_detail_card_back.xml diff --git a/app/src/main/res/layout/item_happy_add_detail_card_back.xml b/app/src/main/res/layout/item_happy_add_detail_card_back.xml new file mode 100644 index 00000000..fbf72aee --- /dev/null +++ b/app/src/main/res/layout/item_happy_add_detail_card_back.xml @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + From f70c87cbe79361db8442509a8e720fcf2a386fea Mon Sep 17 00:00:00 2001 From: pump9918 Date: Sat, 13 Jan 2024 03:02:23 +0900 Subject: [PATCH 08/18] =?UTF-8?q?#39=20[chore]=20=EA=B8=B0=EA=B8=B0?= =?UTF-8?q?=EB=8C=80=EC=9D=91=20dimen=20=ED=8C=8C=EC=9D=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/values-hdpi/dimens.xml | 4 ++++ app/src/main/res/values-mdpi/dimens.xml | 4 ++++ app/src/main/res/values-xhdpi/dimens.xml | 4 ++++ app/src/main/res/values-xxhdpi/dimens.xml | 4 ++++ app/src/main/res/values-xxxhdpi/dimens.xml | 4 ++++ 5 files changed, 20 insertions(+) create mode 100644 app/src/main/res/values-hdpi/dimens.xml create mode 100644 app/src/main/res/values-mdpi/dimens.xml create mode 100644 app/src/main/res/values-xhdpi/dimens.xml create mode 100644 app/src/main/res/values-xxhdpi/dimens.xml create mode 100644 app/src/main/res/values-xxxhdpi/dimens.xml diff --git a/app/src/main/res/values-hdpi/dimens.xml b/app/src/main/res/values-hdpi/dimens.xml new file mode 100644 index 00000000..c9b68580 --- /dev/null +++ b/app/src/main/res/values-hdpi/dimens.xml @@ -0,0 +1,4 @@ + + + 12dp + diff --git a/app/src/main/res/values-mdpi/dimens.xml b/app/src/main/res/values-mdpi/dimens.xml new file mode 100644 index 00000000..c9b68580 --- /dev/null +++ b/app/src/main/res/values-mdpi/dimens.xml @@ -0,0 +1,4 @@ + + + 12dp + diff --git a/app/src/main/res/values-xhdpi/dimens.xml b/app/src/main/res/values-xhdpi/dimens.xml new file mode 100644 index 00000000..c9b68580 --- /dev/null +++ b/app/src/main/res/values-xhdpi/dimens.xml @@ -0,0 +1,4 @@ + + + 12dp + diff --git a/app/src/main/res/values-xxhdpi/dimens.xml b/app/src/main/res/values-xxhdpi/dimens.xml new file mode 100644 index 00000000..c9b68580 --- /dev/null +++ b/app/src/main/res/values-xxhdpi/dimens.xml @@ -0,0 +1,4 @@ + + + 12dp + diff --git a/app/src/main/res/values-xxxhdpi/dimens.xml b/app/src/main/res/values-xxxhdpi/dimens.xml new file mode 100644 index 00000000..c9b68580 --- /dev/null +++ b/app/src/main/res/values-xxxhdpi/dimens.xml @@ -0,0 +1,4 @@ + + + 12dp + From afbfacd2794437fb6220f2b8119db403df36dea0 Mon Sep 17 00:00:00 2001 From: pump9918 Date: Sun, 14 Jan 2024 12:25:37 +0900 Subject: [PATCH 09/18] =?UTF-8?q?#39=20[fix]=20=EC=B9=B4=EB=93=9C=20?= =?UTF-8?q?=EC=95=9E=20=EB=92=B7=EB=A9=B4=20=ED=86=B5=ED=95=A9,=20?= =?UTF-8?q?=EA=B8=B8=EC=9D=B4=20=EC=A1=B0=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../res/layout/activity_happy_add_detail.xml | 13 +- .../res/layout/item_happy_add_detail_card.xml | 199 ++++++++++++++---- .../item_happy_add_detail_card_back.xml | 114 ---------- 3 files changed, 165 insertions(+), 161 deletions(-) delete mode 100644 app/src/main/res/layout/item_happy_add_detail_card_back.xml diff --git a/app/src/main/res/layout/activity_happy_add_detail.xml b/app/src/main/res/layout/activity_happy_add_detail.xml index a631a54c..ecc8a647 100644 --- a/app/src/main/res/layout/activity_happy_add_detail.xml +++ b/app/src/main/res/layout/activity_happy_add_detail.xml @@ -56,25 +56,23 @@ + app:layout_constraintTop_toBottomOf="@id/tv_happy_add_detail_subtitle" + app:layout_constraintVertical_bias="0" /> + app:layout_constraintStart_toStartOf="parent" /> diff --git a/app/src/main/res/layout/item_happy_add_detail_card.xml b/app/src/main/res/layout/item_happy_add_detail_card.xml index 29cca69e..7ea2951c 100644 --- a/app/src/main/res/layout/item_happy_add_detail_card.xml +++ b/app/src/main/res/layout/item_happy_add_detail_card.xml @@ -1,50 +1,171 @@ - + + + + + - - + + + app:layout_constraintTop_toTopOf="parent"> - + + + + + + + - + android:background="@drawable/shape_white_fill_gray100_stroke_20_rect" + android:visibility="invisible" + app:layout_constraintBottom_toBottomOf="@id/cl_happy_routine_add_card" + app:layout_constraintEnd_toEndOf="@id/cl_happy_routine_add_card" + app:layout_constraintStart_toStartOf="@id/cl_happy_routine_add_card" + app:layout_constraintTop_toTopOf="@id/cl_happy_routine_add_card"> + + + + + + + + + + + + + + + + - + diff --git a/app/src/main/res/layout/item_happy_add_detail_card_back.xml b/app/src/main/res/layout/item_happy_add_detail_card_back.xml deleted file mode 100644 index fbf72aee..00000000 --- a/app/src/main/res/layout/item_happy_add_detail_card_back.xml +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - From 54a872076d2acda5a90e29b51908cdc9a399c906 Mon Sep 17 00:00:00 2001 From: pump9918 Date: Sun, 14 Jan 2024 18:27:27 +0900 Subject: [PATCH 10/18] =?UTF-8?q?#39=20[fix]=20=EC=B9=B4=EB=93=9C=20?= =?UTF-8?q?=EA=B8=80=EC=9E=90=20=EC=88=98=20=EB=B0=98=EC=9D=91=20xml=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../res/layout/activity_happy_add_detail.xml | 5 +- .../res/layout/item_happy_add_detail_card.xml | 47 ++++++++++--------- 2 files changed, 28 insertions(+), 24 deletions(-) diff --git a/app/src/main/res/layout/activity_happy_add_detail.xml b/app/src/main/res/layout/activity_happy_add_detail.xml index ecc8a647..ba2a045e 100644 --- a/app/src/main/res/layout/activity_happy_add_detail.xml +++ b/app/src/main/res/layout/activity_happy_add_detail.xml @@ -8,7 +8,8 @@ + android:layout_height="match_parent" + android:background="@color/background"> + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="@id/md_happy_routine_add_card_divider" /> + app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintBottom_toBottomOf="@id/iv_happy_routine_add_card_detail_time_back" + app:layout_constraintStart_toEndOf="@id/iv_happy_routine_add_card_detail_time_back" + app:layout_constraintTop_toTopOf="@id/iv_happy_routine_add_card_detail_time_back" /> + app:layout_constraintBottom_toBottomOf="@id/iv_happy_routine_add_card_detail_place_back" + app:layout_constraintStart_toEndOf="@id/iv_happy_routine_add_card_detail_place_back" + app:layout_constraintTop_toTopOf="@id/iv_happy_routine_add_card_detail_place_back" /> Date: Sun, 14 Jan 2024 18:40:54 +0900 Subject: [PATCH 11/18] =?UTF-8?q?#39=20[feat]=20=EC=B9=B4=ED=85=8C?= =?UTF-8?q?=EA=B3=A0=EB=A6=AC=20=EB=B3=84=20=EB=8D=B0=EC=9D=B4=ED=84=B0,?= =?UTF-8?q?=20=EC=B9=B4=EB=93=9C=20=EC=97=B0=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sopetit/softie/domain/entity/HappyCard.kt | 3 + .../adddetail/HappyDetailActivity.kt | 48 +++-- .../adddetail/HappyDetailCardPagerAdapter.kt | 55 ++++-- .../adddetail/HappyDetailCardViewModel.kt | 177 +++++++++++++++--- 4 files changed, 235 insertions(+), 48 deletions(-) diff --git a/app/src/main/java/com/sopetit/softie/domain/entity/HappyCard.kt b/app/src/main/java/com/sopetit/softie/domain/entity/HappyCard.kt index 5910e652..15df67d1 100644 --- a/app/src/main/java/com/sopetit/softie/domain/entity/HappyCard.kt +++ b/app/src/main/java/com/sopetit/softie/domain/entity/HappyCard.kt @@ -3,6 +3,7 @@ package com.sopetit.softie.domain.entity import androidx.annotation.DrawableRes data class HappyCard( + val categoryId: Int, val name: String, val nameColor: String, val title: String, @@ -19,3 +20,5 @@ data class HappyCard( val detailPlace: String ) } + + diff --git a/app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailActivity.kt b/app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailActivity.kt index ad84aaab..fbb46aa5 100644 --- a/app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailActivity.kt +++ b/app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailActivity.kt @@ -1,15 +1,19 @@ package com.sopetit.softie.ui.happyroutine.adddetail +import android.content.Intent import android.graphics.Color import android.graphics.Rect import android.os.Bundle import android.view.View import androidx.activity.viewModels +import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.RecyclerView import androidx.viewpager2.widget.CompositePageTransformer import androidx.viewpager2.widget.ViewPager2 import com.sopetit.softie.R import com.sopetit.softie.databinding.ActivityHappyAddDetailBinding +import com.sopetit.softie.ui.happyroutine.addlist.HappyAddListActivity.Companion.ID +import com.sopetit.softie.ui.main.MainActivity import com.sopetit.softie.util.binding.BindingActivity class HappyDetailActivity : @@ -23,9 +27,20 @@ class HappyDetailActivity : super.onCreate(savedInstanceState) viewPager = binding.vpHappyAddDetailCard + val categoryId = intent.getIntExtra(ID, -1) + val viewModel = ViewModelProvider(this).get(HappyDetailCardViewModel::class.java) + val happyCard = viewModel.mockHappyCardList.value?.get(categoryId - 1) + + happyCard?.let { + binding.tvHappyAddDetailTitle.text = happyCard.name + binding.ivHappyAddDetailIcon.setImageResource(happyCard.iconImageUrl) + binding.tvHappyAddDetailSubtitle.text = happyCard.title + binding.tvHappyAddDetailTitle.setTextColor(Color.parseColor(happyCard.nameColor)) + } + setBackEnter() - setupBinding() - setupAdapter() + setSnackbarEnter() + setupAdapter(categoryId) setIndicator() initViewPager() initPagerDiv(0, 90) @@ -37,22 +52,27 @@ class HappyDetailActivity : } } - private fun setupBinding() { - val happyCard = viewModel.mockHappyCardList.value?.get(1) - happyCard?.let { - binding.tvHappyAddDetailTitle.text = it.name - binding.ivHappyAddDetailIcon.setImageResource(it.iconImageUrl) - binding.tvHappyAddDetailSubtitle.text = it.title - binding.tvHappyAddDetailTitle.setTextColor(Color.parseColor(it.nameColor)) + private fun setSnackbarEnter() { + binding.btnHappyDetailAdd.setOnClickListener { + moveToIng() + } + } + + private fun moveToIng() { + Intent(this, MainActivity::class.java).apply { + startActivity(this) } } - private fun setupAdapter() { + private fun setupAdapter(categoryId: Int) { with(binding) { - happyRoutineAddCardPagerAdapter = HappyDetailCardPagerAdapter() + happyRoutineAddCardPagerAdapter = + HappyDetailCardPagerAdapter() // categoryId를 전달합니다. vpHappyAddDetailCard.adapter = happyRoutineAddCardPagerAdapter } - happyRoutineAddCardPagerAdapter.submitList(viewModel.mockHappyCardList.value) + happyRoutineAddCardPagerAdapter.submitList( + viewModel.getHappyCardListForId(categoryId).get(0).routines + ) } private fun setIndicator() { @@ -62,9 +82,9 @@ class HappyDetailActivity : private fun initViewPager() { viewPager.adapter = happyRoutineAddCardPagerAdapter - val dpValue = 40 + val dp = resources.getDimensionPixelSize(R.dimen.view_margin) val d = resources.displayMetrics.density - val margin = (dpValue * d).toInt() + val margin = (dp * d).toInt() with(binding.vpHappyAddDetailCard) { clipChildren = false diff --git a/app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailCardPagerAdapter.kt b/app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailCardPagerAdapter.kt index 7307bf97..816c6dbf 100644 --- a/app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailCardPagerAdapter.kt +++ b/app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailCardPagerAdapter.kt @@ -1,6 +1,7 @@ package com.sopetit.softie.ui.happyroutine.adddetail import android.view.LayoutInflater +import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView @@ -8,13 +9,49 @@ import com.sopetit.softie.databinding.ItemHappyAddDetailCardBinding import com.sopetit.softie.domain.entity.HappyCard import com.sopetit.softie.util.ItemDiffCallback -class HappyDetailCardPagerAdapter : - ListAdapter( - ItemDiffCallback( - onItemsTheSame = { oldItem, newItem -> oldItem == newItem }, - onContentsTheSame = { oldItem, newItem -> oldItem == newItem } +class HappyDetailCardPagerAdapter() : + ListAdapter( + ItemDiffCallback( + onItemsTheSame = { oldItem, newItem -> oldItem.routineId == newItem.routineId }, + onContentsTheSame = { oldItem, newItem -> oldItem.routineId == newItem.routineId } ) ) { + + class HappyPagerViewHolder( + private val binding: ItemHappyAddDetailCardBinding + ) : + RecyclerView.ViewHolder(binding.root) { + + fun onBind(data: HappyCard.Routines) { + binding.ivHappyRoutineAddCard.setImageResource(data.cardImageUrl) + binding.tvHappyRoutineAddCardDetailTitle.text = data.detailTitle + binding.tvHappyRoutineAddCardDetailTitleBack.text = data.detailTitle + binding.tvHappyRoutineAddCardDetailContentBack.text = data.detailContent + binding.tvHappyRoutineAddCardDetailTimeBack.text = data.detailTime + binding.tvHappyRoutineAddCardDetailPlaceBack.text = data.detailPlace + binding.clHappyRoutineAddCard.setOnClickListener { + val isVisible = binding.clHappyRoutineAddCard.visibility == View.VISIBLE + if (isVisible) { + binding.clHappyRoutineAddCard.visibility = View.INVISIBLE + binding.clHappyRoutineAddCardBack.visibility = View.VISIBLE + } else { + binding.clHappyRoutineAddCard.visibility = View.VISIBLE + binding.clHappyRoutineAddCardBack.visibility = View.INVISIBLE + } + } + binding.clHappyRoutineAddCardBack.setOnClickListener { + val isVisible = binding.clHappyRoutineAddCardBack.visibility == View.VISIBLE + if (isVisible) { + binding.clHappyRoutineAddCardBack.visibility = View.INVISIBLE + binding.clHappyRoutineAddCard.visibility = View.VISIBLE + } else { + binding.clHappyRoutineAddCardBack.visibility = View.VISIBLE + binding.clHappyRoutineAddCard.visibility = View.INVISIBLE + } + } + } + } + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): HappyPagerViewHolder { val binding = ItemHappyAddDetailCardBinding.inflate( LayoutInflater.from(parent.context), parent, false @@ -25,12 +62,4 @@ class HappyDetailCardPagerAdapter : override fun onBindViewHolder(holder: HappyPagerViewHolder, position: Int) { holder.onBind(currentList[position]) } - - class HappyPagerViewHolder(private val binding: ItemHappyAddDetailCardBinding) : - RecyclerView.ViewHolder(binding.root) { - fun onBind(data: HappyCard) { - binding.ivHappyRoutineAddCard.setImageResource(data.routines[0].cardImageUrl) - binding.tvHappyRoutineAddCardDetailTitle.text = data.routines[0].content - } - } } diff --git a/app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailCardViewModel.kt b/app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailCardViewModel.kt index b46f4bd5..fe9bc152 100644 --- a/app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailCardViewModel.kt +++ b/app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailCardViewModel.kt @@ -11,64 +11,196 @@ class HappyDetailCardViewModel : ViewModel() { private val _mockHappyCardList: MutableLiveData> = MutableLiveData( mutableListOf( HappyCard( + categoryId = 1, name = "관계 쌓기", - nameColor = "#CEB59E", + nameColor = "#FFFF5D76", title = "성숙한 사랑을 만나기 위한 행복 루틴", - iconImageUrl = R.drawable.ic_happy_bling_blue, + iconImageUrl = R.drawable.ic_happy_bling_red, routines = listOf( HappyCard.Routines( routineId = 1, - cardImageUrl = R.drawable.ic_happycard_up_blue, - content = "서점에 가서 랜덤 책 골라서 공중제비 돌기", + cardImageUrl = R.drawable.ic_happycard_up_red, + content = "서점에 가서 \n랜덤 책 골라서 공중제비 돌기", detailTitle = "이상형의 특성 10가지 적어보고,\n절대 포기 못할 2가지와\n나와 비슷한 3가지 찾아보기", - detailContent = "평소에 바빠서 연락하지 못한 사람이 있다면 \n안부인사 개인톡을 보내 봐. 꼭 만나서 밥을 \n먹거나 하지 않아도 연락 한 통이 나와 그 사\n람을 연결하는 방법이 될 수 있어", + detailContent = "평소에 바빠서 연락하지 못한 사람이 있다면 안부인사 개인톡을 보내 봐. 꼭 만나서 밥을 먹거나 하지 않아도 연락 한 통이 나와 그 사람을 연결하는 방법이 될 수 있어. 난 너를 믿", detailTime = "5~10분", detailPlace = "회사 옥상, 점심식사 후 돌아가는 길" ), HappyCard.Routines( routineId = 2, cardImageUrl = R.drawable.ic_happycard_up_red, content = "길가다가 박수치기", - detailTitle = "홍대에서 가장 맛있는\n음식점을 찾아보아요\n나와 비슷한 3가지 찾아보기", - detailContent = "우리나라 좋은나라\n안부인사 개인톡을 보내 봐. 꼭 만나서 밥을 \n먹거나 하지 않아도 연락 한 통이 나와 그 사\n람을 연결하는 방법이 될 수 있어", + detailTitle = "홍대에서 가장 맛있는 음식점을 찾아보아요\n나와 비슷한 3가지 찾아보기", + detailContent = "우리나라 좋은나라 안부인사 개인톡을 보내 봐. 꼭 만나서 밥을 먹거나 하지 않아도 연락 한 통이 나와 그 사람을 연결하는 방법이 될 수 있어", detailTime = "6~30분", detailPlace = "홍대 옥상, 저녁식사 후 돌아가는 길" ), HappyCard.Routines( routineId = 3, - cardImageUrl = R.drawable.ic_happycard_up_orange, + cardImageUrl = R.drawable.ic_happycard_up_red, content = "클럽에서 짜장면 시키기", detailTitle = "스포츠몬스터로 가서,\n절대 포기 못할 2가지와\n나와 비슷한 3가지 찾아보기", - detailContent = "살다보면 다 그런거래요 \n안부인사 개인톡을 보내 봐. 꼭 만나서 밥을 \n먹거나 하지 않아도 연락 한 통이 나와 그 사\n람을 연결하는 방법이 될 수 있어", + detailContent = "살다보면 다 그런거래요 안부인사 개인톡을 보내 봐. 꼭 만나서 밥을 먹거나 하지 않아도 연락 한 통이 나와 그 사\n람을 연결하는 방법이 될 수 있어", detailTime = "10~40분", detailPlace = "일산 킨텍스" ) ) ), HappyCard( - name = "두 번째 카드", + categoryId = 2, + name = "관계 쌓기", + nameColor = "#FFFF5D76", + title = "진정성 있는 관계를 만드는", + iconImageUrl = R.drawable.ic_happy_bling_red, + routines = listOf( + HappyCard.Routines( + routineId = 1, + cardImageUrl = R.drawable.ic_happycard_up_red, + content = "서점에 가서 \n 랜덤 책 골라서 공중제비 돌기", + detailTitle = "이상형의 특성 10가지 적어보고, 절대 포기 못할 2가지와 나와 비슷한 3가지 찾아보기", + detailContent = "평소에 바빠서 연락하지 못한 사람이 있다면 안부인사 개인톡을 보내 봐. 꼭 만나서 밥을 먹거나 하지 않아도 연락 한 통이 나와 그 사람을 연결하는 방법이 될 수 있어", + detailTime = "5~10분", + detailPlace = "회사 옥상, 점심식사 후 돌아가는 길" + ), + HappyCard.Routines( + routineId = 2, + cardImageUrl = R.drawable.ic_happycard_up_red, + content = "서점에 가서 \n 랜덤 책 골라서 공중제비 돌기", + detailTitle = "이상형의 특성 10가지 적어보고, 절대 포기 못할 2가지와 나와 비슷한 3가지 찾아보기", + detailContent = "평소에 바빠서 연락하지 못한 사람이 있다면 안부인사 개인톡을 보내 봐. 꼭 만나서 밥을 먹거나 하지 않아도 연락 한 통이 나와 그 사람을 연결하는 방법이 될 수 있어", + detailTime = "5~10분", + detailPlace = "회사 옥상, 점심식사 후 돌아가는 길" + ) + ) + ), + HappyCard( + categoryId = 3, + name = "한 걸음 성장", nameColor = "#FFF27400", - title = "두 번째 카드 제목", - iconImageUrl = R.drawable.ic_happy_bling_purple, + title = "나를 알고 진짜 목표를 세우는", + iconImageUrl = R.drawable.ic_happy_bling_orange, routines = listOf( HappyCard.Routines( + routineId = 1, + cardImageUrl = R.drawable.ic_happycard_up_orange, + content = "서점에 가서 \n랜덤 책 골라서 공중제비 돌기", + detailTitle = "이상형의 특성 10가지 적어보고, 절대 포기 못할 2가지와 나와 비슷한 3가지 찾아보기", + detailContent = "평소에 바빠서 연락하지 못한 사람이 있다면 안부인사 개인톡을 보내 봐. 꼭 만나서 밥을 먹거나 하지 않아도 연락 한 통이 나와 그 사람을 연결하는 방법이 될 수 있어", + detailTime = "5~10분", + detailPlace = "회사 옥상, 점심식사 후 돌아가는 길" + ), HappyCard.Routines( routineId = 2, - cardImageUrl = R.drawable.ic_happycard_up_purple, - content = "두 번째 카드의 콘텐츠", - detailTitle = "두 번째 카드의 디테일 제목", - detailContent = "두 번째 카드의 디테일 내용", - detailTime = "두 번째 카드의 디테일 시간", - detailPlace = "두 번째 카드의 디테일 장소" + cardImageUrl = R.drawable.ic_happycard_up_orange, + content = "길가다가 박수치기", + detailTitle = "홍대에서 가장 맛있는 음식점을 찾아보아요나와 비슷한 3가지 찾아보기", + detailContent = "우리나라 좋은나라 안부인사 개인톡을 보내 봐. 꼭 만나서 밥을 먹거나 하지 않아도 연락 한 통이 나와 그 사\n람을 연결하는 방법이 될 수 있어", + detailTime = "6~30분", + detailPlace = "홍대 옥상, 저녁식사 후 돌아가는 길" + ), HappyCard.Routines( + routineId = 3, + cardImageUrl = R.drawable.ic_happycard_up_orange, + content = "클럽에서 짜장면 시키기", + detailTitle = "스포츠몬스터로 가서, 절대 포기 못할 2가지와 나와 비슷한 3가지 찾아보기", + detailContent = "살다보면 다 그런거래요 안부인사 개인톡을 보내 봐. 꼭 만나서 밥을 먹거나 하지 않아도 연락 한 통이 나와 그 사\n람을 연결하는 방법이 될 수 있어", + detailTime = "10~40분", + detailPlace = "일산 킨텍스" ) ) ), HappyCard( - name = "세 번째 카드", - nameColor = "#FFFFFF", - title = "세 번째 카드 제목", + categoryId = 4, + name = "한 걸음 성장", + nameColor = "#FFF27400", + title = "좋아하는, 잘하는 일을 찾아가는", iconImageUrl = R.drawable.ic_happy_bling_orange, routines = listOf( HappyCard.Routines( + routineId = 3, + cardImageUrl = R.drawable.ic_happycard_up_orange, + content = "세 번째 카드의 콘텐츠", + detailTitle = "세 번째 카드의 디테일 제목", + detailContent = "세 번째 카드의 디테일 내용", + detailTime = "세 번째 카드의 디테일 시간", + detailPlace = "세 번째 카드의 디테일 장소" + ), HappyCard.Routines( routineId = 2, cardImageUrl = R.drawable.ic_happycard_up_orange, + content = "길가다가 박수치기", + detailTitle = "홍대에서 가장 맛있는 음식점을 찾아보아요 나와 비슷한 3가지 찾아보기", + detailContent = "우리나라 좋은나라 안부인사 개인톡을 보내 봐. 꼭 만나서 밥을 먹거나 하지 않아도 연락 한 통이 나와 그 사\n람을 연결하는 방법이 될 수 있어", + detailTime = "6~30분", + detailPlace = "홍대 옥상, 저녁식사 후 돌아가는 길" + ), HappyCard.Routines( + routineId = 3, + cardImageUrl = R.drawable.ic_happycard_up_orange, + content = "클럽에서 짜장면 시키기", + detailTitle = "스포츠몬스터로 가서, 절대 포기 못할 2가지와 나와 비슷한 3가지 찾아보기", + detailContent = "살다보면 다 그런거래요 안부인사 개인톡을 보내 봐. 꼭 만나서 밥을 먹거나 하지 않아도 연락 한 통이 나와 그 사\n람을 연결하는 방법이 될 수 있어", + detailTime = "10~40분", + detailPlace = "일산 킨텍스" + ) + ) + ), + HappyCard( + categoryId = 5, + name = "잘 쉬어가기", + nameColor = "#FF3DB96F", + title = "데이터가 아직 없습니다", + iconImageUrl = R.drawable.ic_happy_bling_green, + routines = listOf( + HappyCard.Routines( + routineId = 3, + cardImageUrl = R.drawable.ic_happycard_up_green, + content = "세 번째 카드의 콘텐츠", + detailTitle = "세 번째 카드의 디테일 제목", + detailContent = "세 번째 카드의 디테일 내용", + detailTime = "세 번째 카드의 디테일 시간", + detailPlace = "세 번째 카드의 디테일 장소" + ) + ) + ), + HappyCard( + categoryId = 6, + name = "새로운 나", + nameColor = "#FF7B89D1", + title = "나를 알고 진짜 목표를 세우는", + iconImageUrl = R.drawable.ic_happy_bling_blue, + routines = listOf( + HappyCard.Routines( + routineId = 3, + cardImageUrl = R.drawable.ic_happycard_up_blue, + content = "세 번째 카드의 콘텐츠", + detailTitle = "세 번째 카드의 디테일 제목", + detailContent = "세 번째 카드의 디테일 내용", + detailTime = "세 번째 카드의 디테일 시간", + detailPlace = "세 번째 카드의 디테일 장소" + ), HappyCard.Routines( + routineId = 2, + cardImageUrl = R.drawable.ic_happycard_up_blue, + content = "길가다가 박수치기", + detailTitle = "홍대에서 가장 맛있는 음식점을 찾아보아요 나와 비슷한 3가지 찾아보기", + detailContent = "우리나라 좋은나라 안부인사 개인톡을 보내 봐. 꼭 만나서 밥을 먹거나 하지 않아도 연락 한 통이 나와 그 사\n람을 연결하는 방법이 될 수 있어", + detailTime = "6~30분", + detailPlace = "홍대 옥상, 저녁식사 후 돌아가는 길" + ), HappyCard.Routines( + routineId = 3, + cardImageUrl = R.drawable.ic_happycard_up_blue, + content = "클럽에서 짜장면 시키기", + detailTitle = "스포츠몬스터로 가서, 절대 포기 못할 2가지와 나와 비슷한 3가지 찾아보기", + detailContent = "살다보면 다 그런거래요 안부인사 개인톡을 보내 봐. 꼭 만나서 밥을 먹거나 하지 않아도 연락 한 통이 나와 그 사\n람을 연결하는 방법이 될 수 있어", + detailTime = "10~40분", + detailPlace = "일산 킨텍스" + ) + ) + ), + HappyCard( + categoryId = 7, + name = "마음 챙김", + nameColor = "#FFBC73E6", + title = "데이터가 아직 없습니다", + iconImageUrl = R.drawable.ic_happy_bling_purple, + routines = listOf( + HappyCard.Routines( + routineId = 3, + cardImageUrl = R.drawable.ic_happycard_up_purple, content = "세 번째 카드의 콘텐츠", detailTitle = "세 번째 카드의 디테일 제목", detailContent = "세 번째 카드의 디테일 내용", @@ -83,4 +215,7 @@ class HappyDetailCardViewModel : ViewModel() { val mockHappyCardList: LiveData> get() = _mockHappyCardList + fun getHappyCardListForId(categoryId: Int): List { + return _mockHappyCardList.value?.filter { it.categoryId == categoryId } ?: emptyList() + } } From 95ec437cbbdb8a5b49029c724e6312486c574087 Mon Sep 17 00:00:00 2001 From: pump9918 Date: Sun, 14 Jan 2024 18:42:19 +0900 Subject: [PATCH 12/18] =?UTF-8?q?#39=20[fix]=20=EC=84=B8=ED=8C=85=20?= =?UTF-8?q?=EC=A0=95=EB=A0=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 20 ++++++++++++------- .../res/layout/activity_happy_add_detail.xml | 1 + .../res/layout/item_happy_add_detail_card.xml | 5 ++--- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index bb72fc7e..cf69baab 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -35,15 +35,10 @@ - - + android:screenOrientation="portrait" /> @@ -53,10 +48,21 @@ + + + + + Date: Sun, 14 Jan 2024 18:46:48 +0900 Subject: [PATCH 13/18] =?UTF-8?q?#39=20[chore]=20CI=20=EC=A0=95=EB=A0=AC?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/happyroutine/adddetail/HappyDetailCardViewModel.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailCardViewModel.kt b/app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailCardViewModel.kt index fe9bc152..96f36a27 100644 --- a/app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailCardViewModel.kt +++ b/app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailCardViewModel.kt @@ -208,7 +208,7 @@ class HappyDetailCardViewModel : ViewModel() { detailPlace = "세 번째 카드의 디테일 장소" ) ) - ), + ) ) ) From bc44ccf4512841fe1b2e892dee74591e234996a0 Mon Sep 17 00:00:00 2001 From: pump9918 Date: Sun, 14 Jan 2024 18:52:24 +0900 Subject: [PATCH 14/18] =?UTF-8?q?#39=20[chore]=20CI=20=EC=A0=95=EB=A0=AC?= =?UTF-8?q?=20=EC=9E=AC=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sopetit/softie/domain/entity/HappyCard.kt | 2 -- .../adddetail/HappyDetailCardViewModel.kt | 24 ++++++++++++------- .../addlist/HappyAddListViewModel.kt | 10 ++++---- 3 files changed, 21 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/sopetit/softie/domain/entity/HappyCard.kt b/app/src/main/java/com/sopetit/softie/domain/entity/HappyCard.kt index 15df67d1..98e7b2b7 100644 --- a/app/src/main/java/com/sopetit/softie/domain/entity/HappyCard.kt +++ b/app/src/main/java/com/sopetit/softie/domain/entity/HappyCard.kt @@ -20,5 +20,3 @@ data class HappyCard( val detailPlace: String ) } - - diff --git a/app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailCardViewModel.kt b/app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailCardViewModel.kt index 96f36a27..75829b87 100644 --- a/app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailCardViewModel.kt +++ b/app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailCardViewModel.kt @@ -25,7 +25,8 @@ class HappyDetailCardViewModel : ViewModel() { detailContent = "평소에 바빠서 연락하지 못한 사람이 있다면 안부인사 개인톡을 보내 봐. 꼭 만나서 밥을 먹거나 하지 않아도 연락 한 통이 나와 그 사람을 연결하는 방법이 될 수 있어. 난 너를 믿", detailTime = "5~10분", detailPlace = "회사 옥상, 점심식사 후 돌아가는 길" - ), HappyCard.Routines( + ), + HappyCard.Routines( routineId = 2, cardImageUrl = R.drawable.ic_happycard_up_red, content = "길가다가 박수치기", @@ -33,7 +34,8 @@ class HappyDetailCardViewModel : ViewModel() { detailContent = "우리나라 좋은나라 안부인사 개인톡을 보내 봐. 꼭 만나서 밥을 먹거나 하지 않아도 연락 한 통이 나와 그 사람을 연결하는 방법이 될 수 있어", detailTime = "6~30분", detailPlace = "홍대 옥상, 저녁식사 후 돌아가는 길" - ), HappyCard.Routines( + ), + HappyCard.Routines( routineId = 3, cardImageUrl = R.drawable.ic_happycard_up_red, content = "클럽에서 짜장면 시키기", @@ -86,7 +88,8 @@ class HappyDetailCardViewModel : ViewModel() { detailContent = "평소에 바빠서 연락하지 못한 사람이 있다면 안부인사 개인톡을 보내 봐. 꼭 만나서 밥을 먹거나 하지 않아도 연락 한 통이 나와 그 사람을 연결하는 방법이 될 수 있어", detailTime = "5~10분", detailPlace = "회사 옥상, 점심식사 후 돌아가는 길" - ), HappyCard.Routines( + ), + HappyCard.Routines( routineId = 2, cardImageUrl = R.drawable.ic_happycard_up_orange, content = "길가다가 박수치기", @@ -94,7 +97,8 @@ class HappyDetailCardViewModel : ViewModel() { detailContent = "우리나라 좋은나라 안부인사 개인톡을 보내 봐. 꼭 만나서 밥을 먹거나 하지 않아도 연락 한 통이 나와 그 사\n람을 연결하는 방법이 될 수 있어", detailTime = "6~30분", detailPlace = "홍대 옥상, 저녁식사 후 돌아가는 길" - ), HappyCard.Routines( + ), + HappyCard.Routines( routineId = 3, cardImageUrl = R.drawable.ic_happycard_up_orange, content = "클럽에서 짜장면 시키기", @@ -120,7 +124,8 @@ class HappyDetailCardViewModel : ViewModel() { detailContent = "세 번째 카드의 디테일 내용", detailTime = "세 번째 카드의 디테일 시간", detailPlace = "세 번째 카드의 디테일 장소" - ), HappyCard.Routines( + ), + HappyCard.Routines( routineId = 2, cardImageUrl = R.drawable.ic_happycard_up_orange, content = "길가다가 박수치기", @@ -128,7 +133,8 @@ class HappyDetailCardViewModel : ViewModel() { detailContent = "우리나라 좋은나라 안부인사 개인톡을 보내 봐. 꼭 만나서 밥을 먹거나 하지 않아도 연락 한 통이 나와 그 사\n람을 연결하는 방법이 될 수 있어", detailTime = "6~30분", detailPlace = "홍대 옥상, 저녁식사 후 돌아가는 길" - ), HappyCard.Routines( + ), + HappyCard.Routines( routineId = 3, cardImageUrl = R.drawable.ic_happycard_up_orange, content = "클럽에서 짜장면 시키기", @@ -172,7 +178,8 @@ class HappyDetailCardViewModel : ViewModel() { detailContent = "세 번째 카드의 디테일 내용", detailTime = "세 번째 카드의 디테일 시간", detailPlace = "세 번째 카드의 디테일 장소" - ), HappyCard.Routines( + ), + HappyCard.Routines( routineId = 2, cardImageUrl = R.drawable.ic_happycard_up_blue, content = "길가다가 박수치기", @@ -180,7 +187,8 @@ class HappyDetailCardViewModel : ViewModel() { detailContent = "우리나라 좋은나라 안부인사 개인톡을 보내 봐. 꼭 만나서 밥을 먹거나 하지 않아도 연락 한 통이 나와 그 사\n람을 연결하는 방법이 될 수 있어", detailTime = "6~30분", detailPlace = "홍대 옥상, 저녁식사 후 돌아가는 길" - ), HappyCard.Routines( + ), + HappyCard.Routines( routineId = 3, cardImageUrl = R.drawable.ic_happycard_up_blue, content = "클럽에서 짜장면 시키기", diff --git a/app/src/main/java/com/sopetit/softie/ui/happyroutine/addlist/HappyAddListViewModel.kt b/app/src/main/java/com/sopetit/softie/ui/happyroutine/addlist/HappyAddListViewModel.kt index 83bf5fc6..0afad2c9 100644 --- a/app/src/main/java/com/sopetit/softie/ui/happyroutine/addlist/HappyAddListViewModel.kt +++ b/app/src/main/java/com/sopetit/softie/ui/happyroutine/addlist/HappyAddListViewModel.kt @@ -114,7 +114,7 @@ class HappyAddListViewModel : ViewModel() { title = "관계쌓기", content = "진정성 있는 관계를 만드는", imageUrl = R.drawable.ic_happy_red, - ), + ) ) _mockHappyContentListTwo.value = listOf( @@ -129,7 +129,7 @@ class HappyAddListViewModel : ViewModel() { title = "한 걸음 성장", content = "좋아하는, 잘하는 일을 찾아 가는", imageUrl = R.drawable.ic_happy_orange, - ), + ) ) _mockHappyContentListThree.value = listOf( @@ -138,7 +138,7 @@ class HappyAddListViewModel : ViewModel() { title = "잘 쉬어가기", content = "데이터가 아직 없습니다", imageUrl = R.drawable.ic_happy_green, - ), + ) ) _mockHappyContentListFour.value = listOf( @@ -147,7 +147,7 @@ class HappyAddListViewModel : ViewModel() { title = "새로운 나", content = "나를 알고 진짜 목표를 세우는", imageUrl = R.drawable.ic_happy_blue, - ), + ) ) _mockHappyContentListFive.value = listOf( @@ -156,7 +156,7 @@ class HappyAddListViewModel : ViewModel() { title = "마음 챙김", content = "데이터가 아직 없습니다", imageUrl = R.drawable.ic_happy_purple, - ), + ) ) } } From 6389ade2926e7271f63405cb88de0729b7ece657 Mon Sep 17 00:00:00 2001 From: pump9918 Date: Sun, 14 Jan 2024 19:11:45 +0900 Subject: [PATCH 15/18] =?UTF-8?q?#39=20[chore]=20CI=20=EC=A0=95=EB=A0=AC?= =?UTF-8?q?=20=EB=8B=A4=EC=8B=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adddetail/HappyDetailCardViewModel.kt | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailCardViewModel.kt b/app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailCardViewModel.kt index 75829b87..ed5a353f 100644 --- a/app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailCardViewModel.kt +++ b/app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailCardViewModel.kt @@ -33,7 +33,7 @@ class HappyDetailCardViewModel : ViewModel() { detailTitle = "홍대에서 가장 맛있는 음식점을 찾아보아요\n나와 비슷한 3가지 찾아보기", detailContent = "우리나라 좋은나라 안부인사 개인톡을 보내 봐. 꼭 만나서 밥을 먹거나 하지 않아도 연락 한 통이 나와 그 사람을 연결하는 방법이 될 수 있어", detailTime = "6~30분", - detailPlace = "홍대 옥상, 저녁식사 후 돌아가는 길" + detailPlace = "홍대 옥상, 저녁식사 후 돌아가는 길", ), HappyCard.Routines( routineId = 3, @@ -42,7 +42,7 @@ class HappyDetailCardViewModel : ViewModel() { detailTitle = "스포츠몬스터로 가서,\n절대 포기 못할 2가지와\n나와 비슷한 3가지 찾아보기", detailContent = "살다보면 다 그런거래요 안부인사 개인톡을 보내 봐. 꼭 만나서 밥을 먹거나 하지 않아도 연락 한 통이 나와 그 사\n람을 연결하는 방법이 될 수 있어", detailTime = "10~40분", - detailPlace = "일산 킨텍스" + detailPlace = "일산 킨텍스", ) ) ), @@ -60,7 +60,7 @@ class HappyDetailCardViewModel : ViewModel() { detailTitle = "이상형의 특성 10가지 적어보고, 절대 포기 못할 2가지와 나와 비슷한 3가지 찾아보기", detailContent = "평소에 바빠서 연락하지 못한 사람이 있다면 안부인사 개인톡을 보내 봐. 꼭 만나서 밥을 먹거나 하지 않아도 연락 한 통이 나와 그 사람을 연결하는 방법이 될 수 있어", detailTime = "5~10분", - detailPlace = "회사 옥상, 점심식사 후 돌아가는 길" + detailPlace = "회사 옥상, 점심식사 후 돌아가는 길", ), HappyCard.Routines( routineId = 2, @@ -69,7 +69,7 @@ class HappyDetailCardViewModel : ViewModel() { detailTitle = "이상형의 특성 10가지 적어보고, 절대 포기 못할 2가지와 나와 비슷한 3가지 찾아보기", detailContent = "평소에 바빠서 연락하지 못한 사람이 있다면 안부인사 개인톡을 보내 봐. 꼭 만나서 밥을 먹거나 하지 않아도 연락 한 통이 나와 그 사람을 연결하는 방법이 될 수 있어", detailTime = "5~10분", - detailPlace = "회사 옥상, 점심식사 후 돌아가는 길" + detailPlace = "회사 옥상, 점심식사 후 돌아가는 길", ) ) ), @@ -87,7 +87,7 @@ class HappyDetailCardViewModel : ViewModel() { detailTitle = "이상형의 특성 10가지 적어보고, 절대 포기 못할 2가지와 나와 비슷한 3가지 찾아보기", detailContent = "평소에 바빠서 연락하지 못한 사람이 있다면 안부인사 개인톡을 보내 봐. 꼭 만나서 밥을 먹거나 하지 않아도 연락 한 통이 나와 그 사람을 연결하는 방법이 될 수 있어", detailTime = "5~10분", - detailPlace = "회사 옥상, 점심식사 후 돌아가는 길" + detailPlace = "회사 옥상, 점심식사 후 돌아가는 길", ), HappyCard.Routines( routineId = 2, @@ -96,7 +96,7 @@ class HappyDetailCardViewModel : ViewModel() { detailTitle = "홍대에서 가장 맛있는 음식점을 찾아보아요나와 비슷한 3가지 찾아보기", detailContent = "우리나라 좋은나라 안부인사 개인톡을 보내 봐. 꼭 만나서 밥을 먹거나 하지 않아도 연락 한 통이 나와 그 사\n람을 연결하는 방법이 될 수 있어", detailTime = "6~30분", - detailPlace = "홍대 옥상, 저녁식사 후 돌아가는 길" + detailPlace = "홍대 옥상, 저녁식사 후 돌아가는 길", ), HappyCard.Routines( routineId = 3, @@ -105,7 +105,7 @@ class HappyDetailCardViewModel : ViewModel() { detailTitle = "스포츠몬스터로 가서, 절대 포기 못할 2가지와 나와 비슷한 3가지 찾아보기", detailContent = "살다보면 다 그런거래요 안부인사 개인톡을 보내 봐. 꼭 만나서 밥을 먹거나 하지 않아도 연락 한 통이 나와 그 사\n람을 연결하는 방법이 될 수 있어", detailTime = "10~40분", - detailPlace = "일산 킨텍스" + detailPlace = "일산 킨텍스", ) ) ), @@ -123,7 +123,7 @@ class HappyDetailCardViewModel : ViewModel() { detailTitle = "세 번째 카드의 디테일 제목", detailContent = "세 번째 카드의 디테일 내용", detailTime = "세 번째 카드의 디테일 시간", - detailPlace = "세 번째 카드의 디테일 장소" + detailPlace = "세 번째 카드의 디테일 장소", ), HappyCard.Routines( routineId = 2, @@ -132,7 +132,7 @@ class HappyDetailCardViewModel : ViewModel() { detailTitle = "홍대에서 가장 맛있는 음식점을 찾아보아요 나와 비슷한 3가지 찾아보기", detailContent = "우리나라 좋은나라 안부인사 개인톡을 보내 봐. 꼭 만나서 밥을 먹거나 하지 않아도 연락 한 통이 나와 그 사\n람을 연결하는 방법이 될 수 있어", detailTime = "6~30분", - detailPlace = "홍대 옥상, 저녁식사 후 돌아가는 길" + detailPlace = "홍대 옥상, 저녁식사 후 돌아가는 길", ), HappyCard.Routines( routineId = 3, @@ -141,7 +141,7 @@ class HappyDetailCardViewModel : ViewModel() { detailTitle = "스포츠몬스터로 가서, 절대 포기 못할 2가지와 나와 비슷한 3가지 찾아보기", detailContent = "살다보면 다 그런거래요 안부인사 개인톡을 보내 봐. 꼭 만나서 밥을 먹거나 하지 않아도 연락 한 통이 나와 그 사\n람을 연결하는 방법이 될 수 있어", detailTime = "10~40분", - detailPlace = "일산 킨텍스" + detailPlace = "일산 킨텍스", ) ) ), @@ -159,7 +159,7 @@ class HappyDetailCardViewModel : ViewModel() { detailTitle = "세 번째 카드의 디테일 제목", detailContent = "세 번째 카드의 디테일 내용", detailTime = "세 번째 카드의 디테일 시간", - detailPlace = "세 번째 카드의 디테일 장소" + detailPlace = "세 번째 카드의 디테일 장소", ) ) ), @@ -177,7 +177,7 @@ class HappyDetailCardViewModel : ViewModel() { detailTitle = "세 번째 카드의 디테일 제목", detailContent = "세 번째 카드의 디테일 내용", detailTime = "세 번째 카드의 디테일 시간", - detailPlace = "세 번째 카드의 디테일 장소" + detailPlace = "세 번째 카드의 디테일 장소", ), HappyCard.Routines( routineId = 2, @@ -186,7 +186,7 @@ class HappyDetailCardViewModel : ViewModel() { detailTitle = "홍대에서 가장 맛있는 음식점을 찾아보아요 나와 비슷한 3가지 찾아보기", detailContent = "우리나라 좋은나라 안부인사 개인톡을 보내 봐. 꼭 만나서 밥을 먹거나 하지 않아도 연락 한 통이 나와 그 사\n람을 연결하는 방법이 될 수 있어", detailTime = "6~30분", - detailPlace = "홍대 옥상, 저녁식사 후 돌아가는 길" + detailPlace = "홍대 옥상, 저녁식사 후 돌아가는 길", ), HappyCard.Routines( routineId = 3, @@ -195,7 +195,7 @@ class HappyDetailCardViewModel : ViewModel() { detailTitle = "스포츠몬스터로 가서, 절대 포기 못할 2가지와 나와 비슷한 3가지 찾아보기", detailContent = "살다보면 다 그런거래요 안부인사 개인톡을 보내 봐. 꼭 만나서 밥을 먹거나 하지 않아도 연락 한 통이 나와 그 사\n람을 연결하는 방법이 될 수 있어", detailTime = "10~40분", - detailPlace = "일산 킨텍스" + detailPlace = "일산 킨텍스", ) ) ), @@ -213,7 +213,7 @@ class HappyDetailCardViewModel : ViewModel() { detailTitle = "세 번째 카드의 디테일 제목", detailContent = "세 번째 카드의 디테일 내용", detailTime = "세 번째 카드의 디테일 시간", - detailPlace = "세 번째 카드의 디테일 장소" + detailPlace = "세 번째 카드의 디테일 장소", ) ) ) From c24fcf646548fd418c962bdf63e2ef784337ac17 Mon Sep 17 00:00:00 2001 From: pump9918 Date: Sun, 14 Jan 2024 21:10:55 +0900 Subject: [PATCH 16/18] =?UTF-8?q?#39=20[chore]=20=EC=84=9C=EB=B2=84=20?= =?UTF-8?q?=EA=B4=80=EA=B3=84=20=EC=97=86=EB=8A=94=20string=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../res/layout/activity_happy_add_detail.xml | 15 +++++---- .../res/layout/item_happy_add_detail_card.xml | 33 ++++++++++--------- app/src/main/res/values/strings.xml | 6 ---- 3 files changed, 25 insertions(+), 29 deletions(-) diff --git a/app/src/main/res/layout/activity_happy_add_detail.xml b/app/src/main/res/layout/activity_happy_add_detail.xml index 195defdb..e7775728 100644 --- a/app/src/main/res/layout/activity_happy_add_detail.xml +++ b/app/src/main/res/layout/activity_happy_add_detail.xml @@ -1,6 +1,7 @@ + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools"> @@ -27,21 +28,21 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="80dp" - android:text="@string/chip_item_happy_relationship" android:textColor="@color/happyroutine_red" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintTop_toTopOf="parent" + tools:text="@string/chip_item_happy_relationship" /> + app:layout_constraintTop_toBottomOf="@id/tv_happy_add_detail_title" + tools:src="@drawable/ic_happy_bling_red" /> + app:layout_constraintTop_toBottomOf="@id/iv_happy_add_detail_icon" + tools:text="@string/happy_detail_subtitle" /> + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools"> @@ -25,24 +26,24 @@ android:id="@+id/iv_happy_routine_add_card" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:src="@drawable/ic_happycard_up_green" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintTop_toTopOf="parent" + tools:src="@drawable/ic_happycard_up_green" /> + app:layout_constraintTop_toBottomOf="@id/iv_happy_routine_add_card" + tools:text="이상형의 특성 10가지 적어보고,\n절대 포기 못할 2가지와\n나와 비슷한 3가지 찾아보기" /> + tools:text="이상형의 특성 10가지 적어보고,\n절대 포기 못할 2가지와\n나와 비슷한 3가지 찾아보기" /> + app:layout_constraintTop_toBottomOf="@id/md_happy_routine_add_card_divider" + tools:text="평소에 바빠서 연락하지 못한 사람이 있다면 안부인사 개인톡을 보내 봐. 꼭 만나서 밥을 먹거나 하지 않아도 연락 한 통이 나와 그 사람을 연결하는 방법이 될 수 있어" /> + app:layout_constraintTop_toTopOf="@id/iv_happy_routine_add_card_detail_time_back" + tools:text="5~10분" /> + app:layout_constraintTop_toTopOf="@id/iv_happy_routine_add_card_detail_place_back" + tools:text="회사 옥상, 점심식사 후 돌아가는 길" /> 성숙한 사랑을 만나기 위한 - 관계 쌓기 - 성숙한 사랑을 만나기 위한 이 루틴을 추가할래 - 이상형의 특성 10가지 적어보고,\n절대 포기 못할 2가지와\n나와 비슷한 3가지 찾아보기 - 평소에 바빠서 연락하지 못한 사람이 있다면 안부인사 개인톡을 보내 봐. 꼭 만나서 밥을 먹거나 하지 않아도 연락 한 통이 나와 그 사람을 연결하는 방법이 될 수 있어 - 5~10분 - 회사 옥상, 점심식사 후 돌아가는 길 어떤 친구와 함께 할까요? From 99683b39153ea782b93c021b4bb895c250ae617e Mon Sep 17 00:00:00 2001 From: pump9918 Date: Sun, 14 Jan 2024 21:11:34 +0900 Subject: [PATCH 17/18] =?UTF-8?q?#39=20[chore]=20=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=84=B0=20binding=20=ED=95=A8=EC=88=98=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adddetail/HappyDetailActivity.kt | 12 +++-- .../adddetail/HappyDetailCardPagerAdapter.kt | 48 +++++++++---------- 2 files changed, 31 insertions(+), 29 deletions(-) diff --git a/app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailActivity.kt b/app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailActivity.kt index fbb46aa5..e3ac0118 100644 --- a/app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailActivity.kt +++ b/app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailActivity.kt @@ -32,10 +32,12 @@ class HappyDetailActivity : val happyCard = viewModel.mockHappyCardList.value?.get(categoryId - 1) happyCard?.let { - binding.tvHappyAddDetailTitle.text = happyCard.name - binding.ivHappyAddDetailIcon.setImageResource(happyCard.iconImageUrl) - binding.tvHappyAddDetailSubtitle.text = happyCard.title - binding.tvHappyAddDetailTitle.setTextColor(Color.parseColor(happyCard.nameColor)) + with(binding) { + tvHappyAddDetailTitle.text = happyCard.name + ivHappyAddDetailIcon.setImageResource(happyCard.iconImageUrl) + tvHappyAddDetailSubtitle.text = happyCard.title + tvHappyAddDetailTitle.setTextColor(Color.parseColor(happyCard.nameColor)) + } } setBackEnter() @@ -67,7 +69,7 @@ class HappyDetailActivity : private fun setupAdapter(categoryId: Int) { with(binding) { happyRoutineAddCardPagerAdapter = - HappyDetailCardPagerAdapter() // categoryId를 전달합니다. + HappyDetailCardPagerAdapter() vpHappyAddDetailCard.adapter = happyRoutineAddCardPagerAdapter } happyRoutineAddCardPagerAdapter.submitList( diff --git a/app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailCardPagerAdapter.kt b/app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailCardPagerAdapter.kt index 816c6dbf..9b0180ea 100644 --- a/app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailCardPagerAdapter.kt +++ b/app/src/main/java/com/sopetit/softie/ui/happyroutine/adddetail/HappyDetailCardPagerAdapter.kt @@ -13,7 +13,7 @@ class HappyDetailCardPagerAdapter() : ListAdapter( ItemDiffCallback( onItemsTheSame = { oldItem, newItem -> oldItem.routineId == newItem.routineId }, - onContentsTheSame = { oldItem, newItem -> oldItem.routineId == newItem.routineId } + onContentsTheSame = { oldItem, newItem -> oldItem == newItem } ) ) { @@ -23,33 +23,33 @@ class HappyDetailCardPagerAdapter() : RecyclerView.ViewHolder(binding.root) { fun onBind(data: HappyCard.Routines) { - binding.ivHappyRoutineAddCard.setImageResource(data.cardImageUrl) - binding.tvHappyRoutineAddCardDetailTitle.text = data.detailTitle - binding.tvHappyRoutineAddCardDetailTitleBack.text = data.detailTitle - binding.tvHappyRoutineAddCardDetailContentBack.text = data.detailContent - binding.tvHappyRoutineAddCardDetailTimeBack.text = data.detailTime - binding.tvHappyRoutineAddCardDetailPlaceBack.text = data.detailPlace - binding.clHappyRoutineAddCard.setOnClickListener { - val isVisible = binding.clHappyRoutineAddCard.visibility == View.VISIBLE - if (isVisible) { - binding.clHappyRoutineAddCard.visibility = View.INVISIBLE - binding.clHappyRoutineAddCardBack.visibility = View.VISIBLE - } else { - binding.clHappyRoutineAddCard.visibility = View.VISIBLE - binding.clHappyRoutineAddCardBack.visibility = View.INVISIBLE + with(binding) { + ivHappyRoutineAddCard.setImageResource(data.cardImageUrl) + tvHappyRoutineAddCardDetailTitle.text = data.detailTitle + tvHappyRoutineAddCardDetailTitleBack.text = data.detailTitle + tvHappyRoutineAddCardDetailContentBack.text = data.detailContent + tvHappyRoutineAddCardDetailTimeBack.text = data.detailTime + tvHappyRoutineAddCardDetailPlaceBack.text = data.detailPlace + + clHappyRoutineAddCard.setOnClickListener { + setCardFlip(clHappyRoutineAddCard, clHappyRoutineAddCardBack) } - } - binding.clHappyRoutineAddCardBack.setOnClickListener { - val isVisible = binding.clHappyRoutineAddCardBack.visibility == View.VISIBLE - if (isVisible) { - binding.clHappyRoutineAddCardBack.visibility = View.INVISIBLE - binding.clHappyRoutineAddCard.visibility = View.VISIBLE - } else { - binding.clHappyRoutineAddCardBack.visibility = View.VISIBLE - binding.clHappyRoutineAddCard.visibility = View.INVISIBLE + clHappyRoutineAddCardBack.setOnClickListener { + setCardFlip(clHappyRoutineAddCardBack, clHappyRoutineAddCard) } } } + + private fun setCardFlip(viewFront: View, viewToBack: View) { + val isVisible = viewFront.visibility == View.VISIBLE + if (isVisible) { + viewFront.visibility = View.INVISIBLE + viewToBack.visibility = View.VISIBLE + } else { + viewFront.visibility = View.VISIBLE + viewToBack.visibility = View.INVISIBLE + } + } } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): HappyPagerViewHolder { From fb68b368954b7c6014a7a80998461ee52dc9852e Mon Sep 17 00:00:00 2001 From: pump9918 Date: Sun, 14 Jan 2024 21:13:54 +0900 Subject: [PATCH 18/18] =?UTF-8?q?#39=20[chore]=20=EB=A7=A4=EB=8B=88?= =?UTF-8?q?=ED=8C=A8=EC=8A=A4=ED=8A=B8=20=EC=A0=95=EC=83=81=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index cf69baab..2bc6c966 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -50,12 +50,12 @@