From 6221b2f512ea4c2d69c584718b911424e77433f8 Mon Sep 17 00:00:00 2001 From: Daemon Jung Date: Sun, 28 Jul 2024 23:48:08 +0900 Subject: [PATCH 01/48] =?UTF-8?q?[delete]=20=EC=84=9C=EB=B9=84=EC=8A=A4=20?= =?UTF-8?q?=EB=B2=84=EC=A0=84=20=ED=91=9C=EC=8B=9C=EB=A1=9C=EB=A7=8C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=20#30?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fragment/mypage/VersionFragment.kt | 40 ------------------- app/src/main/res/layout/fragment_version.xml | 19 --------- 2 files changed, 59 deletions(-) delete mode 100644 app/src/main/java/com/toyou/toyouandroid/presentation/fragment/mypage/VersionFragment.kt delete mode 100644 app/src/main/res/layout/fragment_version.xml diff --git a/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/mypage/VersionFragment.kt b/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/mypage/VersionFragment.kt deleted file mode 100644 index c0445381..00000000 --- a/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/mypage/VersionFragment.kt +++ /dev/null @@ -1,40 +0,0 @@ -package com.toyou.toyouandroid.presentation.fragment.mypage - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.navigation.NavController -import androidx.navigation.Navigation -import com.toyou.toyouandroid.databinding.FragmentVersionBinding - -class VersionFragment : Fragment() { - - private lateinit var navController: NavController - - private var _binding: FragmentVersionBinding? = null - private val binding: FragmentVersionBinding - get() = requireNotNull(_binding){"FragmentVersionBinding -> null"} - - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - - _binding = FragmentVersionBinding.inflate(inflater, container, false) - - return binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - navController = Navigation.findNavController(view) - } - - override fun onDestroyView() { - super.onDestroyView() - _binding = null - } -} \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_version.xml b/app/src/main/res/layout/fragment_version.xml deleted file mode 100644 index 2cbe728b..00000000 --- a/app/src/main/res/layout/fragment_version.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - \ No newline at end of file From 5fa92dbf5453c669a2c7e1f02d2f84f61afd3d0a Mon Sep 17 00:00:00 2001 From: Daemon Jung Date: Sun, 28 Jul 2024 23:48:55 +0900 Subject: [PATCH 02/48] =?UTF-8?q?[delete]=20=EC=84=9C=EB=B9=84=EC=8A=A4=20?= =?UTF-8?q?=EB=B2=84=EC=A0=84=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C=20#30?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/fragment/mypage/MypageFragment.kt | 10 ---------- app/src/main/res/navigation/nav_graph.xml | 11 ----------- 2 files changed, 21 deletions(-) diff --git a/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/mypage/MypageFragment.kt b/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/mypage/MypageFragment.kt index 37e527fa..9e5b69c8 100644 --- a/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/mypage/MypageFragment.kt +++ b/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/mypage/MypageFragment.kt @@ -68,10 +68,6 @@ class MypageFragment : Fragment() { navController.navigate(R.id.action_navigation_mypage_to_terms_of_use_fragment) } - binding.mypageVersion.setOnClickListener { - navController.navigate(R.id.action_navigation_mypage_to_version_fragment) - } - binding.mypageLogoutBtn.setOnClickListener { UserApiClient.instance.logout { error -> if (error != null) { @@ -82,7 +78,6 @@ class MypageFragment : Fragment() { } } viewModelManager.resetAllViewModels() -// resetApp() navController.navigate(R.id.action_navigation_mypage_to_login_fragment) } @@ -100,11 +95,6 @@ class MypageFragment : Fragment() { } } - private fun resetApp() { - val navGraph = navController.navInflater.inflate(R.navigation.nav_graph) - navController.graph = navGraph - } - override fun onDestroyView() { super.onDestroyView() _binding = null diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml index c2759b27..d466de82 100644 --- a/app/src/main/res/navigation/nav_graph.xml +++ b/app/src/main/res/navigation/nav_graph.xml @@ -160,12 +160,6 @@ app:popUpTo="@id/navigation_notice_setting" app:enterAnim="@anim/slide_in_right" app:exitAnim="@anim/slide_in_left"/> - - Date: Sun, 28 Jul 2024 23:49:14 +0900 Subject: [PATCH 03/48] =?UTF-8?q?[chore]=20=EB=A7=88=EC=9D=B4=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EC=9D=B4=EC=A0=84=EB=B2=84=ED=8A=BC=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C=20#30?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/layout/fragment_mypage.xml | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/app/src/main/res/layout/fragment_mypage.xml b/app/src/main/res/layout/fragment_mypage.xml index 08844c36..10d23ad4 100644 --- a/app/src/main/res/layout/fragment_mypage.xml +++ b/app/src/main/res/layout/fragment_mypage.xml @@ -40,15 +40,6 @@ android:orientation="vertical" app:layout_constraintGuide_begin="36dp" /> - - + android:layout_marginTop="27dp" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent" /> Date: Sun, 28 Jul 2024 23:49:40 +0900 Subject: [PATCH 04/48] =?UTF-8?q?[chore]=20=EB=8B=AC=EB=A0=A5=20=EC=B9=9C?= =?UTF-8?q?=EA=B5=AC=20=EA=B8=B0=EB=A1=9D=20=EB=A0=88=EC=9D=B4=EC=95=84?= =?UTF-8?q?=EC=9B=83=20=EB=B3=80=EA=B2=BD=20#30?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/fragment/calendar/CalendarFragment.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/calendar/CalendarFragment.kt b/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/calendar/CalendarFragment.kt index c460abc7..cfae8e87 100644 --- a/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/calendar/CalendarFragment.kt +++ b/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/calendar/CalendarFragment.kt @@ -64,11 +64,11 @@ class CalendarFragment : Fragment() { ) val adapter = CalendarAdapter(items) - binding.calendarRv.layoutManager = GridLayoutManager(context, 6) + binding.calendarRv.layoutManager = GridLayoutManager(context, 5) binding.calendarRv.adapter = adapter val verticalSpaceHeight = resources.getDimensionPixelSize(R.dimen.recycler_item_spacing) - val horizontalSpaceHeight = verticalSpaceHeight / 2 + val horizontalSpaceHeight = resources.getDimensionPixelSize(R.dimen.recycler_item_spacing_side) binding.calendarRv.addItemDecoration(CalendarItemDecoration(horizontalSpaceHeight, verticalSpaceHeight)) } From 3fce01896a82f8b3364dbf1fd6786fa4a06fb9db Mon Sep 17 00:00:00 2001 From: Daemon Jung Date: Sun, 28 Jul 2024 23:50:29 +0900 Subject: [PATCH 05/48] =?UTF-8?q?[design]=20=EB=B0=94=ED=85=80=EC=8B=9C?= =?UTF-8?q?=ED=8A=B8=20=EC=9D=BC=EA=B8=B0=EC=B9=B4=EB=93=9C=200=EA=B0=9C?= =?UTF-8?q?=EC=9D=BC=20=EA=B2=BD=EC=9A=B0=20UI=20=EC=B6=94=EA=B0=80=20#30?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../res/drawable/home_bottomsheet_pseudo.xml | 22 ++++++++++++ app/src/main/res/layout/fragment_home.xml | 36 +++++++++++++++++++ app/src/main/res/values/strings.xml | 1 + 3 files changed, 59 insertions(+) create mode 100644 app/src/main/res/drawable/home_bottomsheet_pseudo.xml diff --git a/app/src/main/res/drawable/home_bottomsheet_pseudo.xml b/app/src/main/res/drawable/home_bottomsheet_pseudo.xml new file mode 100644 index 00000000..6eb63db1 --- /dev/null +++ b/app/src/main/res/drawable/home_bottomsheet_pseudo.xml @@ -0,0 +1,22 @@ + + + + + + diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index 9b48aa9d..88f6c206 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -174,11 +174,47 @@ android:background="@android:color/white" android:scrollbars="vertical" android:layout_marginTop="24dp" + android:visibility="gone" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintTop_toBottomOf="@+id/home_bottom_sheet_title" /> + + + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 66edaf65..758f390b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -59,6 +59,7 @@ 20240503 따끈따끈한 친구들의 일기카드를 확인해보세요! + 아직 친구들이 일기카드를 \n 작성하지 않았어요 평범한 하루였어요 부글부글 화가 나요 생각이 많아지고 불안해요 From c1e23a2e203cf9165e95d79b47a98abe8cf69445 Mon Sep 17 00:00:00 2001 From: Daemon Jung Date: Sun, 28 Jul 2024 23:50:46 +0900 Subject: [PATCH 06/48] =?UTF-8?q?[design]=20=EB=A6=AC=EC=82=AC=EC=9D=B4?= =?UTF-8?q?=ED=81=B4=EB=9F=AC=EB=B7=B0=20=EA=B0=80=EB=A1=9C=20=EA=B3=B5?= =?UTF-8?q?=EB=B0=B1=20=EC=B6=94=EA=B0=80=20#30?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/values/dimens.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index f8762e20..4fadc280 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -3,5 +3,6 @@ 16dp 16dp 20dp + 15dp 80dp \ No newline at end of file From 6c327f53da1bed134aa7c5c597d4bc293af73cbf Mon Sep 17 00:00:00 2001 From: Daemon Jung Date: Sun, 28 Jul 2024 23:51:24 +0900 Subject: [PATCH 07/48] =?UTF-8?q?[chore]=20=ED=99=88=ED=99=94=EB=A9=B4=20?= =?UTF-8?q?=EB=82=A0=EC=A7=9C=20=EA=B0=90=EC=A0=95=EB=B6=88=EC=95=88=20?= =?UTF-8?q?=EB=B0=B0=EA=B2=BD=EC=83=89=20=EB=B3=80=EA=B2=BD=20#30?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/fragment/emotionstamp/HomeOptionFragment.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/emotionstamp/HomeOptionFragment.kt b/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/emotionstamp/HomeOptionFragment.kt index 4132b0db..22cce94b 100644 --- a/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/emotionstamp/HomeOptionFragment.kt +++ b/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/emotionstamp/HomeOptionFragment.kt @@ -53,7 +53,7 @@ class HomeOptionFragment : Fragment() { homeViewModel.updateHomeEmotion( R.drawable.home_emotion_anxiety, getString(R.string.home_emotion_anxiety_title), - R.color.g01, + R.color.g02, R.drawable.background_green) homeViewModel.updateMypageEmotion(R.drawable.home_stamp_option_anxiety) From dec4b490c07dd215a2e56678a4cd95275186cb31 Mon Sep 17 00:00:00 2001 From: Daemon Jung Date: Sun, 28 Jul 2024 23:51:48 +0900 Subject: [PATCH 08/48] =?UTF-8?q?[chore]=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20?= =?UTF-8?q?=ED=99=94=EB=A9=B4=20=EB=A1=9C=EA=B3=A0=20=EC=9C=84=EC=B9=98=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=20#30?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/layout/fragment_login.xml | 4 ++-- app/src/main/res/layout/fragment_splash.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/layout/fragment_login.xml b/app/src/main/res/layout/fragment_login.xml index 2926f649..ef5f97f5 100644 --- a/app/src/main/res/layout/fragment_login.xml +++ b/app/src/main/res/layout/fragment_login.xml @@ -29,7 +29,7 @@ android:text="@string/login_title" android:textColor="@color/black" style="@style/sc_l12" - android:layout_marginTop="24dp" + android:layout_marginBottom="100dp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" @@ -55,7 +55,7 @@ android:textColor="@color/black" style="@style/sc_m13" android:background="@drawable/kakao_btn" - android:layout_marginBottom="62dp" + android:layout_marginBottom="120dp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintBottom_toBottomOf="parent" /> diff --git a/app/src/main/res/layout/fragment_splash.xml b/app/src/main/res/layout/fragment_splash.xml index 86d3661d..bfe54f65 100644 --- a/app/src/main/res/layout/fragment_splash.xml +++ b/app/src/main/res/layout/fragment_splash.xml @@ -29,7 +29,7 @@ android:text="@string/login_title" android:textColor="@color/black" style="@style/sc_l12" - android:layout_marginTop="24dp" + android:layout_marginBottom="100dp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" From a6cc353e0361cc913796614ffd6e0a29707bbdc4 Mon Sep 17 00:00:00 2001 From: Daemon Jung Date: Sun, 28 Jul 2024 23:52:07 +0900 Subject: [PATCH 09/48] =?UTF-8?q?[chore]=20=ED=9A=8C=EC=9B=90=EA=B0=80?= =?UTF-8?q?=EC=9E=85=20=EB=8F=99=EC=9D=98=20=ED=99=94=EB=A9=B4=20=EC=B2=B4?= =?UTF-8?q?=ED=81=AC=EB=B0=95=EC=8A=A4=20=ED=81=AC=EA=B8=B0=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=20#30?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/res/layout/fragment_signupagree.xml | 66 +++++++++++-------- 1 file changed, 37 insertions(+), 29 deletions(-) diff --git a/app/src/main/res/layout/fragment_signupagree.xml b/app/src/main/res/layout/fragment_signupagree.xml index 23bb101e..e036750e 100644 --- a/app/src/main/res/layout/fragment_signupagree.xml +++ b/app/src/main/res/layout/fragment_signupagree.xml @@ -104,25 +104,25 @@ android:layout_marginTop="10dp" android:text="@string/signup_agree_sub_title" android:textColor="@color/bl02" - style="@style/sc_r18" + style="@style/sc_r15" + android:lineSpacingExtra="2sp" app:layout_constraintStart_toStartOf="@id/guideline_title_v" app:layout_constraintTop_toBottomOf="@id/signup_agree_title" /> + android:layout_marginStart="11dp" /> @@ -167,6 +167,7 @@ android:layout_height="wrap_content" android:textColor="@color/black" android:layout_marginTop="14dp" + android:layout_marginStart="6dp" android:text="@string/signup_agree_select_2" style="@style/sc_r15" app:layout_constraintStart_toStartOf="@+id/guideline_agree_select" @@ -180,13 +181,14 @@ android:textColor="@color/white" style="@style/sc_r10" android:background="@drawable/signupagree_essential" - android:layout_marginStart="4dp" + android:layout_marginStart="6dp" + android:layout_marginTop="2dp" app:layout_constraintStart_toEndOf="@+id/signup_agree_select_2" app:layout_constraintTop_toTopOf="@+id/signup_agree_select_2" /> @@ -204,7 +206,8 @@ android:id="@+id/signup_agree_select_3" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="19dp" + android:layout_marginTop="21dp" + android:layout_marginStart="6dp" android:text="@string/signup_agree_select_3" android:textColor="@color/black" style="@style/sc_r15" @@ -219,7 +222,8 @@ android:textColor="@color/white" style="@style/sc_r10" android:background="@drawable/signupagree_essential" - android:layout_marginStart="4dp" + android:layout_marginStart="6dp" + android:layout_marginTop="2dp" app:layout_constraintStart_toEndOf="@+id/signup_agree_select_3" app:layout_constraintTop_toTopOf="@+id/signup_agree_select_3" /> @@ -233,7 +237,7 @@ @@ -252,6 +256,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="19dp" + android:layout_marginStart="6dp" android:text="@string/signup_agree_select_4" android:textColor="@color/black" style="@style/sc_r15" @@ -266,7 +271,8 @@ android:textColor="@color/white" style="@style/sc_r10" android:background="@drawable/signupagree_essential" - android:layout_marginStart="4dp" + android:layout_marginStart="6dp" + android:layout_marginTop="2dp" app:layout_constraintStart_toEndOf="@+id/signup_agree_select_4" app:layout_constraintTop_toTopOf="@+id/signup_agree_select_4" /> @@ -280,7 +286,7 @@ @@ -299,6 +305,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="19dp" + android:layout_marginStart="6dp" android:text="@string/signup_agree_select_5" android:textColor="@color/black" style="@style/sc_r15" @@ -313,7 +320,8 @@ android:textColor="@color/r01" style="@style/sc_r10" android:background="@drawable/signupagree_choose" - android:layout_marginStart="4dp" + android:layout_marginStart="6dp" + android:layout_marginTop="2dp" app:layout_constraintStart_toEndOf="@+id/signup_agree_select_5" app:layout_constraintTop_toTopOf="@+id/signup_agree_select_5" /> From 464b478d3829715c355fb8560ed72a4a55a1a883 Mon Sep 17 00:00:00 2001 From: Daemon Jung Date: Sun, 28 Jul 2024 23:53:33 +0900 Subject: [PATCH 10/48] =?UTF-8?q?[chore]=20=ED=9A=8C=EC=9B=90=EA=B0=80?= =?UTF-8?q?=EC=9E=85=20=EB=8B=89=EB=84=A4=EC=9E=84=20=EC=9E=85=EB=A0=A5=20?= =?UTF-8?q?UI=20=EB=B3=80=EA=B2=BD=20#30?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/res/drawable/signupnickname_input.xml | 2 +- .../main/res/layout/fragment_signupnickname.xml | 15 +++++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/app/src/main/res/drawable/signupnickname_input.xml b/app/src/main/res/drawable/signupnickname_input.xml index 92e15d92..7fd1bd8d 100644 --- a/app/src/main/res/drawable/signupnickname_input.xml +++ b/app/src/main/res/drawable/signupnickname_input.xml @@ -2,7 +2,7 @@ + android:color="@color/white" /> diff --git a/app/src/main/res/layout/fragment_signupnickname.xml b/app/src/main/res/layout/fragment_signupnickname.xml index b8b26624..207cb5af 100644 --- a/app/src/main/res/layout/fragment_signupnickname.xml +++ b/app/src/main/res/layout/fragment_signupnickname.xml @@ -84,16 +84,18 @@ android:layout_height="wrap_content" android:text="@string/signup_nickname_title" android:textColor="@color/black" - style="@style/sc_r18" + style="@style/sc_r15" app:layout_constraintStart_toStartOf="@id/guideline_title_v" app:layout_constraintTop_toTopOf="@id/guideline_title_h" /> @@ -125,9 +127,10 @@ style="@style/sc_r10" android:textColor="@{viewModel.duplicateCheckButtonTextColor}" android:setBackground="@{viewModel.duplicateCheckButtonBackground}" - android:layout_marginStart="4dp" + android:layout_marginStart="10dp" + android:layout_marginTop="7dp" app:layout_constraintStart_toEndOf="@+id/signup_nickname_input" - app:layout_constraintTop_toTopOf="@+id/signup_nickname_input" /> + app:layout_constraintTop_toBottomOf="@+id/signup_nickname_title" /> Date: Tue, 30 Jul 2024 13:35:41 +0900 Subject: [PATCH 11/48] =?UTF-8?q?[design]=20=ED=88=AC=EB=AA=85=EC=83=89=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20#30?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/values/colors.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 2f34b0f3..3ba8b3b1 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -23,4 +23,5 @@ #FF939292 #FFD9D9D9 #FFD6E4D9 + #00000000 \ No newline at end of file From 313885ed76ea9c453660778e3040ff30934194a7 Mon Sep 17 00:00:00 2001 From: Daemon Jung Date: Tue, 30 Jul 2024 13:36:20 +0900 Subject: [PATCH 12/48] =?UTF-8?q?[design]=20=EC=95=8C=EB=A6=BC=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C=20=EB=B2=84=ED=8A=BC=20=EC=B6=94=EA=B0=80=20#30?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/drawable/notice_delete_ic.xml | 9 +++++++++ .../main/res/drawable/notice_mypage_box_transparent.xml | 9 +++++++++ 2 files changed, 18 insertions(+) create mode 100644 app/src/main/res/drawable/notice_delete_ic.xml create mode 100644 app/src/main/res/drawable/notice_mypage_box_transparent.xml diff --git a/app/src/main/res/drawable/notice_delete_ic.xml b/app/src/main/res/drawable/notice_delete_ic.xml new file mode 100644 index 00000000..3ad0d3e5 --- /dev/null +++ b/app/src/main/res/drawable/notice_delete_ic.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/notice_mypage_box_transparent.xml b/app/src/main/res/drawable/notice_mypage_box_transparent.xml new file mode 100644 index 00000000..6259d2ee --- /dev/null +++ b/app/src/main/res/drawable/notice_mypage_box_transparent.xml @@ -0,0 +1,9 @@ + + + + + + + \ No newline at end of file From a6d93091578e1c65c2a028270bd69fc477916e4e Mon Sep 17 00:00:00 2001 From: Daemon Jung Date: Tue, 30 Jul 2024 13:36:50 +0900 Subject: [PATCH 13/48] =?UTF-8?q?[design]=20=EC=82=AD=EC=A0=9C=20=EB=A0=88?= =?UTF-8?q?=EC=9D=B4=EC=95=84=EC=9B=83=20=EC=B6=94=EA=B0=80=20#30?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../res/layout/item_notice_card_check.xml | 82 ++++++++++++----- .../res/layout/item_notice_friend_request.xml | 87 +++++++++++++------ .../item_notice_friend_request_accepted.xml | 61 ++++++++++--- 3 files changed, 165 insertions(+), 65 deletions(-) diff --git a/app/src/main/res/layout/item_notice_card_check.xml b/app/src/main/res/layout/item_notice_card_check.xml index 86513ac8..528dc688 100644 --- a/app/src/main/res/layout/item_notice_card_check.xml +++ b/app/src/main/res/layout/item_notice_card_check.xml @@ -8,32 +8,66 @@ type="com.toyou.toyouandroid.model.NoticeItem.NoticeCardCheckItem" /> - + android:layout_height="wrap_content"> - - - - + android:weightSum="5"> + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_notice_friend_request.xml b/app/src/main/res/layout/item_notice_friend_request.xml index 1dac26d7..9a0a4758 100644 --- a/app/src/main/res/layout/item_notice_friend_request.xml +++ b/app/src/main/res/layout/item_notice_friend_request.xml @@ -8,35 +8,68 @@ type="com.toyou.toyouandroid.model.NoticeItem.NoticeFriendRequestItem" /> - + android:layout_height="wrap_content"> - - - - + android:weightSum="5"> + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_notice_friend_request_accepted.xml b/app/src/main/res/layout/item_notice_friend_request_accepted.xml index 409bd8a9..64d5dcdb 100644 --- a/app/src/main/res/layout/item_notice_friend_request_accepted.xml +++ b/app/src/main/res/layout/item_notice_friend_request_accepted.xml @@ -8,22 +8,55 @@ type="com.toyou.toyouandroid.model.NoticeItem.NoticeFriendRequestAcceptedItem" /> - + android:layout_height="wrap_content"> - - + android:weightSum="5"> + + + + + + + + + + + + + \ No newline at end of file From a71a183f29b28b6d72bf0db390358f274d3db8e3 Mon Sep 17 00:00:00 2001 From: Daemon Jung Date: Tue, 30 Jul 2024 13:37:25 +0900 Subject: [PATCH 14/48] =?UTF-8?q?[chore]=20=EC=96=B4=EB=8C=91=ED=84=B0?= =?UTF-8?q?=EC=97=90=20=EC=82=AD=EC=A0=9C=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20#30?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fragment/notice/NoticeAdapter.kt | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/notice/NoticeAdapter.kt b/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/notice/NoticeAdapter.kt index b9af861e..7402794c 100644 --- a/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/notice/NoticeAdapter.kt +++ b/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/notice/NoticeAdapter.kt @@ -69,23 +69,32 @@ class NoticeAdapter(private val items: MutableList) : override fun getItemCount(): Int = items.size - class FriendRequestViewHolder(private val binding: ItemNoticeFriendRequestBinding) : RecyclerView.ViewHolder(binding.root) { + inner class FriendRequestViewHolder(private val binding: ItemNoticeFriendRequestBinding) : RecyclerView.ViewHolder(binding.root) { fun bind(item: NoticeItem.NoticeFriendRequestItem) { binding.itemFriendRequest = item + binding.noticeCardCheckDelete.setOnClickListener { + removeItem(this.layoutPosition) + } binding.executePendingBindings() } } - class FriendRequestAcceptedViewHolder(private val binding: ItemNoticeFriendRequestAcceptedBinding) : RecyclerView.ViewHolder(binding.root) { + inner class FriendRequestAcceptedViewHolder(private val binding: ItemNoticeFriendRequestAcceptedBinding) : RecyclerView.ViewHolder(binding.root) { fun bind(item: NoticeItem.NoticeFriendRequestAcceptedItem) { binding.itemFriendRequestAccepted = item + binding.noticeCardCheckDelete.setOnClickListener { + removeItem(this.layoutPosition) + } binding.executePendingBindings() } } - class CardCheckViewHolder(private val binding: ItemNoticeCardCheckBinding) : RecyclerView.ViewHolder(binding.root) { + inner class CardCheckViewHolder(private val binding: ItemNoticeCardCheckBinding) : RecyclerView.ViewHolder(binding.root) { fun bind(item: NoticeItem.NoticeCardCheckItem) { binding.itemCardCheck = item + binding.noticeCardCheckDelete.setOnClickListener { + removeItem(this.layoutPosition) + } binding.executePendingBindings() } } @@ -94,6 +103,7 @@ class NoticeAdapter(private val items: MutableList) : if (position >= 0 && position < items.size) { items.removeAt(position) notifyItemRemoved(position) + notifyItemRangeChanged(position, items.size) // 아이템을 제거한 이후의 아이템들에 대해 포지션 업데이트 } } } From 7656b32f39d31f3922f2bd36f6b2ae770b13dc58 Mon Sep 17 00:00:00 2001 From: Daemon Jung Date: Tue, 30 Jul 2024 13:37:47 +0900 Subject: [PATCH 15/48] =?UTF-8?q?[chore]=20=EC=8A=A4=EC=99=80=EC=9D=B4?= =?UTF-8?q?=ED=94=84=20=EB=A1=9C=EC=A7=81=20=EB=B3=80=EA=B2=BD=20#30?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fragment/notice/NoticeFragment.kt | 32 +++++++++++-------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/notice/NoticeFragment.kt b/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/notice/NoticeFragment.kt index c89e906f..8ed24c5f 100644 --- a/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/notice/NoticeFragment.kt +++ b/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/notice/NoticeFragment.kt @@ -51,29 +51,33 @@ class NoticeFragment : Fragment() { NoticeItem.NoticeFriendRequestItem("테디"), NoticeItem.NoticeCardCheckItem("현정"), NoticeItem.NoticeFriendRequestItem("테디"), - NoticeItem.NoticeCardCheckItem("승원"), - NoticeItem.NoticeFriendRequestAcceptedItem("테디"), - NoticeItem.NoticeCardCheckItem("유은"), - NoticeItem.NoticeFriendRequestItem("테디"), - NoticeItem.NoticeCardCheckItem("현정"), - NoticeItem.NoticeFriendRequestItem("테디"), - NoticeItem.NoticeCardCheckItem("승원"), - NoticeItem.NoticeFriendRequestAcceptedItem("테디"), - NoticeItem.NoticeCardCheckItem("유은"), - NoticeItem.NoticeFriendRequestItem("테디"), - NoticeItem.NoticeFriendRequestAcceptedItem("현정") + NoticeItem.NoticeCardCheckItem("승원") ) val adapter = NoticeAdapter(items) binding.noticeRv.layoutManager = GridLayoutManager(context, 1) binding.noticeRv.adapter = adapter - val itemTouchHelper = ItemTouchHelper(SwipeToDeleteNotice(adapter)) - itemTouchHelper.attachToRecyclerView(binding.noticeRv) - val verticalSpaceHeight = resources.getDimensionPixelSize(R.dimen.recycler_item_spacing) binding.noticeRv.addItemDecoration(NoticeItemDecoration(verticalSpaceHeight)) + val swipeToDeleteNotice = SwipeToDeleteNotice(adapter).apply { + setClamp(resources.displayMetrics.widthPixels.toFloat() / 5) + } + ItemTouchHelper(swipeToDeleteNotice).attachToRecyclerView(binding.noticeRv) + + binding.noticeRv.apply { + setOnTouchListener { v, _ -> + swipeToDeleteNotice.removePreviousClamp(this) + v.performClick() + false + } + + setOnClickListener { + // Perform any additional click actions if needed + } + } + binding.noticeBackBtn.setOnClickListener { navController.navigate(R.id.action_navigation_notice_to_home_fragment) } From a079eeb369fb1430a9b642060d6a0955c8759d4e Mon Sep 17 00:00:00 2001 From: Daemon Jung Date: Tue, 30 Jul 2024 13:43:38 +0900 Subject: [PATCH 16/48] =?UTF-8?q?[chore]=20=EC=8A=A4=EC=99=80=EC=9D=B4?= =?UTF-8?q?=ED=94=84=20=EB=A1=9C=EC=A7=81=20=EC=B6=94=EA=B0=80=20#30?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../toyouandroid/utils/SwipeToDeleteNotice.kt | 138 +++++++++++++++++- 1 file changed, 130 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/toyou/toyouandroid/utils/SwipeToDeleteNotice.kt b/app/src/main/java/com/toyou/toyouandroid/utils/SwipeToDeleteNotice.kt index 3f90e02c..eebac5fd 100644 --- a/app/src/main/java/com/toyou/toyouandroid/utils/SwipeToDeleteNotice.kt +++ b/app/src/main/java/com/toyou/toyouandroid/utils/SwipeToDeleteNotice.kt @@ -1,25 +1,147 @@ package com.toyou.toyouandroid.utils +import android.graphics.Canvas +import android.view.View import androidx.recyclerview.widget.ItemTouchHelper +import androidx.recyclerview.widget.ItemTouchHelper.ACTION_STATE_SWIPE import androidx.recyclerview.widget.RecyclerView -import com.toyou.toyouandroid.presentation.fragment.notice.NoticeAdapter +import com.toyou.toyouandroid.R +import kotlin.math.min -class SwipeToDeleteNotice( - private val adapter: NoticeAdapter -) : ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT or ItemTouchHelper.RIGHT) { +class SwipeToDeleteNotice : ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT or ItemTouchHelper.RIGHT) { + + // notice_layout swipe 했을 때 <삭제> 화면이 보이도록 고정하기 위한 변수들 + private var currentPosition: Int? = null // 현재 선택된 recycler view의 position + private var previousPosition: Int? = null // 이전에 선택했던 recycler view의 position + private var currentDx = 0f // 현재 x 값 + private var clamp = 0f // 고정시킬 크기 override fun onMove( recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, target: RecyclerView.ViewHolder ): Boolean { - return false + return true } override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) { - val position = viewHolder.bindingAdapterPosition - if (position != RecyclerView.NO_POSITION) { - adapter.removeItem(position) + // 스와이프 후 <삭제> 버튼 눌러야 삭제 되도록 변경 + } + + // notice_layout만 슬라이드 되도록 + 일정 범위를 swipe하면 <삭제> 화면 보이게 하기 + + // swipe가 cancel되거나 complete되었을 때 호출 + override fun clearView(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder) { + currentDx = 0f // 현재 x 위치 초기화 + previousPosition = viewHolder.bindingAdapterPosition // 스와이프 동작이 끝난 view의 position 기억하기 + getDefaultUIUtil().clearView(getView(viewHolder)) + } + + // ItemTouchHelper가 ViewHolder를 스와이프 되었거나 드래그 되었을 때 호출 + override fun onSelectedChanged(viewHolder: RecyclerView.ViewHolder?, actionState: Int) { + viewHolder?.let { + currentPosition = viewHolder.bindingAdapterPosition // 현재 스와이프 중인 view 의 position 기억하기 + getDefaultUIUtil().onSelected(getView(it)) + } + } + + // 아이템을 터치하거나 스와이프하는 등 뷰에 변화가 생길 경우 호출 + override fun onChildDraw( + c: Canvas, + recyclerView: RecyclerView, + viewHolder: RecyclerView.ViewHolder, + dX: Float, + dY: Float, + actionState: Int, + isCurrentlyActive: Boolean + ) { + if (actionState == ACTION_STATE_SWIPE) { + val view = getView(viewHolder) + val isClamped = getTag(viewHolder) // 고정할지 말지 결정, true : 고정함 false : 고정 안 함 + val newX = clampViewPositionHorizontal(dX, isClamped, isCurrentlyActive) // newX 만큼 이동(고정 시 이동 위치/고정 해제 시 이동 위치 결정) + + // 고정시킬 시 애니메이션 추가 + if (newX == -clamp) { + getView(viewHolder).animate().translationX(-clamp).setDuration(100L).start() + return + } + + currentDx = newX + getDefaultUIUtil().onDraw( + c, + recyclerView, + view, + newX, + dY, + actionState, + isCurrentlyActive + ) + } + } + + // 사용자가 view를 swipe 했다고 간주할 최소 속도 정하기 + override fun getSwipeEscapeVelocity(defaultValue: Float): Float { + return defaultValue * 8 + } + + // 사용자가 view를 swipe 했다고 간주하기 위해 이동해야하는 부분 반환 + // (사용자가 손을 떼면 호출됨) + override fun getSwipeThreshold(viewHolder: RecyclerView.ViewHolder): Float { + // -clamp 이상 swipe시 isClamped를 true로 변경 아닐시 false로 변경 + setTag(viewHolder, currentDx <= -clamp) + return 2f + } + + // notice_layout 반환 -> notice_layout만 이동할 수 있게 해줌 + private fun getView(viewHolder: RecyclerView.ViewHolder) : View = viewHolder.itemView.findViewById(R.id.notice_layout) + + // notice_layout swipe 했을 때 휴지통 아이콘이 보이도록 고정 + private fun clampViewPositionHorizontal( + dX: Float, + isClamped: Boolean, + isCurrentlyActive: Boolean + ) : Float { + // RIGHT 방향으로 swipe 막기 + val max = 0f + + // 고정할 수 있으면 + val newX = if (isClamped) { + // 현재 swipe 중이면 swipe되는 영역 제한 + if (isCurrentlyActive) + // 오른쪽 swipe일 때 + if (dX < 0) dX/4 - clamp + // 왼쪽 swipe일 때 + else dX - clamp + // swipe 중이 아니면 고정시키기 + else -clamp + } + // 고정할 수 없으면 newX는 스와이프한 만큼 + else dX / 2 + + // newX가 0보다 작은지 확인 + return min(newX, max) + } + + // isClamped를 view의 tag로 관리 + // isClamped = true : 고정, false : 고정 해제 + private fun setTag(viewHolder: RecyclerView.ViewHolder, isClamped: Boolean) { viewHolder.itemView.tag = isClamped } + private fun getTag(viewHolder: RecyclerView.ViewHolder) : Boolean = viewHolder.itemView.tag as? Boolean ?: false + + + // view가 swipe 되었을 때 고정될 크기 설정 + fun setClamp(clamp: Float) { this.clamp = clamp } + + // 다른 View가 swipe 되거나 터치되면 고정 해제 + fun removePreviousClamp(recyclerView: RecyclerView) { + // 현재 선택한 view가 이전에 선택한 view와 같으면 패스 + if (currentPosition == previousPosition) return + + // 이전에 선택한 위치의 view 고정 해제 + previousPosition?.let { + val viewHolder = recyclerView.findViewHolderForAdapterPosition(it) ?: return + getView(viewHolder).animate().x(0f).setDuration(100L).start() + setTag(viewHolder, false) + previousPosition = null } } } From 1def410c92b03106e63852b70a313efc77c4f40a Mon Sep 17 00:00:00 2001 From: Daemon Jung Date: Tue, 30 Jul 2024 13:44:41 +0900 Subject: [PATCH 17/48] =?UTF-8?q?[chore]=20=EC=96=B4=EB=8C=91=ED=84=B0=20?= =?UTF-8?q?=EB=B6=88=ED=95=84=EC=9A=94=ED=95=9C=20=EC=97=B0=EA=B2=B0=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0=20#30?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/fragment/notice/NoticeFragment.kt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/notice/NoticeFragment.kt b/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/notice/NoticeFragment.kt index 8ed24c5f..8609fc66 100644 --- a/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/notice/NoticeFragment.kt +++ b/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/notice/NoticeFragment.kt @@ -61,7 +61,7 @@ class NoticeFragment : Fragment() { val verticalSpaceHeight = resources.getDimensionPixelSize(R.dimen.recycler_item_spacing) binding.noticeRv.addItemDecoration(NoticeItemDecoration(verticalSpaceHeight)) - val swipeToDeleteNotice = SwipeToDeleteNotice(adapter).apply { + val swipeToDeleteNotice = SwipeToDeleteNotice().apply { setClamp(resources.displayMetrics.widthPixels.toFloat() / 5) } ItemTouchHelper(swipeToDeleteNotice).attachToRecyclerView(binding.noticeRv) @@ -74,7 +74,6 @@ class NoticeFragment : Fragment() { } setOnClickListener { - // Perform any additional click actions if needed } } From 1801b42da2502f536c6c93fd6bd2be88c58b8076 Mon Sep 17 00:00:00 2001 From: Daemon Jung Date: Tue, 30 Jul 2024 19:19:24 +0900 Subject: [PATCH 18/48] =?UTF-8?q?[design]=20=EB=8B=A4=EC=9D=B4=EC=96=BC?= =?UTF-8?q?=EB=A1=9C=EA=B7=B8=20=EB=B0=B0=EA=B2=BD=20=ED=88=AC=EB=AA=85?= =?UTF-8?q?=EC=83=89=EC=9C=BC=EB=A1=9C=20=EC=A0=95=EC=9D=98=20#30?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/values/colors.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 3ba8b3b1..cd1ca4a0 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -24,4 +24,5 @@ #FFD9D9D9 #FFD6E4D9 #00000000 + #99D9D9D9 \ No newline at end of file From 0625d4085b262afb15dbcf0831c44a5ca34b9863 Mon Sep 17 00:00:00 2001 From: Daemon Jung Date: Tue, 30 Jul 2024 19:20:40 +0900 Subject: [PATCH 19/48] =?UTF-8?q?[design]=20=EB=A7=88=EC=9D=B4=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=ED=94=84=EB=A1=9C=ED=95=84=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20=EB=84=A4=EB=B9=84=EA=B2=8C=EC=9D=B4=EC=85=98=20#30?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/navigation/nav_graph.xml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml index d466de82..08f31d32 100644 --- a/app/src/main/res/navigation/nav_graph.xml +++ b/app/src/main/res/navigation/nav_graph.xml @@ -16,7 +16,7 @@ app:popUpTo="@id/navigation_home"/> + tools:layout="@layout/fragment_profile"> + + From ffd08da5ba98e3f1b7702d4566fbf2caa940fa15 Mon Sep 17 00:00:00 2001 From: Daemon Jung Date: Tue, 30 Jul 2024 19:23:08 +0900 Subject: [PATCH 20/48] =?UTF-8?q?[feature]=20=EB=8F=99=EC=A0=81=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EC=83=9D=EC=84=B1=ED=95=98=EB=8A=94=20=EB=8B=A4?= =?UTF-8?q?=EC=9D=B4=EC=96=BC=EB=A1=9C=EA=B7=B8=20=EB=A0=88=EC=9D=B4?= =?UTF-8?q?=EC=95=84=EC=9B=83=20#30?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fragment/mypage/MypageDialog.kt | 49 ++++++++++++ .../fragment/mypage/MypageDialogViewModel.kt | 56 ++++++++++++++ .../main/res/drawable/dialog_background.xml | 5 ++ app/src/main/res/layout/dialog_mypage.xml | 74 +++++++++++++++++++ 4 files changed, 184 insertions(+) create mode 100644 app/src/main/java/com/toyou/toyouandroid/presentation/fragment/mypage/MypageDialog.kt create mode 100644 app/src/main/java/com/toyou/toyouandroid/presentation/fragment/mypage/MypageDialogViewModel.kt create mode 100644 app/src/main/res/drawable/dialog_background.xml create mode 100644 app/src/main/res/layout/dialog_mypage.xml diff --git a/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/mypage/MypageDialog.kt b/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/mypage/MypageDialog.kt new file mode 100644 index 00000000..d3e5c9f6 --- /dev/null +++ b/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/mypage/MypageDialog.kt @@ -0,0 +1,49 @@ +package com.toyou.toyouandroid.presentation.fragment.mypage + +import android.app.Dialog +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.view.Window +import androidx.databinding.DataBindingUtil +import androidx.fragment.app.DialogFragment +import androidx.fragment.app.activityViewModels +import com.toyou.toyouandroid.R +import com.toyou.toyouandroid.databinding.DialogMypageBinding + +class MypageDialog : DialogFragment() { + + private val viewModel: MypageDialogViewModel by activityViewModels() + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + val binding: DialogMypageBinding = DataBindingUtil.inflate( + inflater, R.layout.dialog_mypage, container, false + ) + binding.lifecycleOwner = this + binding.viewModel = viewModel + return binding.root + } + + override fun onResume() { + super.onResume() + dialog?.window?.setLayout( + convertDpToPx(280), + convertDpToPx(120) + ) + } + + override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { + return Dialog(requireContext(), R.style.MypageDialog).apply { + requestWindowFeature(Window.FEATURE_NO_TITLE) + window?.setBackgroundDrawableResource(android.R.color.transparent) + } + } + + private fun convertDpToPx(dp: Int): Int { + return (dp * resources.displayMetrics.density).toInt() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/mypage/MypageDialogViewModel.kt b/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/mypage/MypageDialogViewModel.kt new file mode 100644 index 00000000..e8060e53 --- /dev/null +++ b/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/mypage/MypageDialogViewModel.kt @@ -0,0 +1,56 @@ +package com.toyou.toyouandroid.presentation.fragment.mypage + +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel + +class MypageDialogViewModel : ViewModel() { + private val _title = MutableLiveData() + val title: LiveData get() = _title + + private val _subTitle = MutableLiveData() + val subTitle: LiveData get() = _subTitle + + private val _leftButtonText = MutableLiveData() + val leftButtonText: LiveData get() = _leftButtonText + + private val _rightButtonText = MutableLiveData() + val rightButtonText: LiveData get() = _rightButtonText + + private val _leftButtonTextColor = MutableLiveData() + val leftButtonTextColor: LiveData get() = _leftButtonTextColor + + private val _rightButtonTextColor = MutableLiveData() + val rightButtonTextColor: LiveData get() = _rightButtonTextColor + + private val _leftButtonClickAction = MutableLiveData<() -> Unit>() + private val _rightButtonClickAction = MutableLiveData<() -> Unit>() + + fun setDialogData( + title: String, + subTitle: String?, + leftButtonText: String, + rightButtonText: String, + leftButtonTextColor: Int, + rightButtonTextColor: Int, + leftButtonClickAction: () -> Unit, + rightButtonClickAction: () -> Unit + ) { + _title.value = title + _subTitle.value = subTitle + _leftButtonText.value = leftButtonText + _rightButtonText.value = rightButtonText + _leftButtonTextColor.value = leftButtonTextColor + _rightButtonTextColor.value = rightButtonTextColor + _leftButtonClickAction.value = leftButtonClickAction + _rightButtonClickAction.value = rightButtonClickAction + } + + fun onLeftButtonClick() { + _leftButtonClickAction.value?.invoke() + } + + fun onRightButtonClick() { + _rightButtonClickAction.value?.invoke() + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/dialog_background.xml b/app/src/main/res/drawable/dialog_background.xml new file mode 100644 index 00000000..aaecd296 --- /dev/null +++ b/app/src/main/res/drawable/dialog_background.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_mypage.xml b/app/src/main/res/layout/dialog_mypage.xml new file mode 100644 index 00000000..6ac7e5e2 --- /dev/null +++ b/app/src/main/res/layout/dialog_mypage.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 0c77d6fb53e7c908f6cbdc4dc89864aee5d48ce0 Mon Sep 17 00:00:00 2001 From: Daemon Jung Date: Tue, 30 Jul 2024 19:23:31 +0900 Subject: [PATCH 21/48] =?UTF-8?q?[design]=20=EB=8B=A4=EC=9D=B4=EC=96=BC?= =?UTF-8?q?=EB=A1=9C=EA=B7=B8=20=ED=88=AC=EB=AA=85=20=ED=85=8C=EB=A7=88=20?= =?UTF-8?q?#30?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/values/themes.xml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 61c05618..b6d6934b 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -20,4 +20,11 @@ + + \ No newline at end of file From 7f293416ce4c48a1570a1537a079fea18f027fe8 Mon Sep 17 00:00:00 2001 From: Daemon Jung Date: Tue, 30 Jul 2024 19:27:45 +0900 Subject: [PATCH 22/48] =?UTF-8?q?[feature]=20=EB=8B=A4=EC=9D=B4=EC=96=BC?= =?UTF-8?q?=EB=A1=9C=EA=B7=B8=20viewmodel=EC=97=90=EC=84=9C=20=EB=8F=99?= =?UTF-8?q?=EC=A0=81=EC=9C=BC=EB=A1=9C=20=EC=83=9D=EC=84=B1=20#30?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fragment/mypage/MypageFragment.kt | 77 +++++++++++++++---- .../fragment/mypage/MypageViewModel.kt | 7 -- 2 files changed, 60 insertions(+), 24 deletions(-) diff --git a/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/mypage/MypageFragment.kt b/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/mypage/MypageFragment.kt index 9e5b69c8..84e8f4da 100644 --- a/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/mypage/MypageFragment.kt +++ b/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/mypage/MypageFragment.kt @@ -1,6 +1,7 @@ package com.toyou.toyouandroid.presentation.fragment.mypage import android.content.ContentValues.TAG +import android.graphics.Color import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -28,7 +29,9 @@ class MypageFragment : Fragment() { private val nicknameViewModel: SignupNicknameViewModel by activityViewModels() private val homeViewModel: HomeViewModel by activityViewModels() private val viewModel: MypageViewModel by viewModels() + private val mypageDialogViewModel: MypageDialogViewModel by activityViewModels() private lateinit var viewModelManager: ViewModelManager + private var mypageDialog: MypageDialog? = null override fun onCreateView( inflater: LayoutInflater, @@ -37,6 +40,7 @@ class MypageFragment : Fragment() { ): View { _binding = FragmentMypageBinding.inflate(inflater, container, false) + binding.viewModel = viewModel binding.lifecycleOwner = this @@ -68,23 +72,6 @@ class MypageFragment : Fragment() { navController.navigate(R.id.action_navigation_mypage_to_terms_of_use_fragment) } - binding.mypageLogoutBtn.setOnClickListener { - UserApiClient.instance.logout { error -> - if (error != null) { - Timber.tag(TAG).e(error, "로그아웃 실패. SDK에서 토큰 삭제됨") - } - else { - Timber.tag(TAG).i("로그아웃 성공. SDK에서 토큰 삭제됨") - } - } - viewModelManager.resetAllViewModels() - navController.navigate(R.id.action_navigation_mypage_to_login_fragment) - } - - binding.mypageSignoutBtn.setOnClickListener { - activity?.finishAffinity() - } - // ViewModel에서 닉네임을 가져와서 TextView에 설정 nicknameViewModel.nickname.observe(viewLifecycleOwner) { nickname -> binding.profileNickname.text = nickname @@ -93,6 +80,62 @@ class MypageFragment : Fragment() { homeViewModel.mypageEmotionStamp.observe(viewLifecycleOwner) { emotion -> binding.mypageEmotionStamp.setImageResource(emotion) } + + binding.mypageSignoutBtn.setOnClickListener { + mypageDialogViewModel.setDialogData( + title = "정말 탈퇴하시겠어요?", + subTitle = "탈퇴 시, 모든 정보가 사라집니다", + leftButtonText = "탈퇴하기", + rightButtonText = "취소", + leftButtonTextColor = Color.RED, + rightButtonTextColor = R.color.black, + leftButtonClickAction = { handleSignout() }, + rightButtonClickAction = { dismissDialog() } + ) + mypageDialog = MypageDialog() + mypageDialog?.show(parentFragmentManager, "CustomDialog") + } + + binding.mypageLogoutBtn.setOnClickListener { + mypageDialogViewModel.setDialogData( + title = "정말 로그아웃하시겠어요?", + subTitle = "", + leftButtonText = "취소", + rightButtonText = "로그아웃", + leftButtonTextColor = R.color.black, + rightButtonTextColor = Color.RED, + leftButtonClickAction = { dismissDialog() }, + rightButtonClickAction = { handleLogout() } + ) + mypageDialog = MypageDialog() + mypageDialog?.show(parentFragmentManager, "CustomDialog") + } + } + + private fun handleSignout() { + Timber.tag("handleSignout").d("handleSignout") + activity?.finishAffinity() + } + + private fun handleLogout() { + Timber.tag("handleLogout").d("handleWithdraw") + + UserApiClient.instance.logout { error -> + if (error != null) { + Timber.tag(TAG).e(error, "로그아웃 실패. SDK에서 토큰 삭제됨") + } + else { + Timber.tag(TAG).i("로그아웃 성공. SDK에서 토큰 삭제됨") + } + } + viewModelManager.resetAllViewModels() + navController.navigate(R.id.action_navigation_mypage_to_login_fragment) + mypageDialog?.dismiss() + } + + private fun dismissDialog() { + Timber.tag("dismissDialog").d("dismissDialog") + mypageDialog?.dismiss() } override fun onDestroyView() { diff --git a/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/mypage/MypageViewModel.kt b/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/mypage/MypageViewModel.kt index 6afa649d..a9c8a49e 100644 --- a/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/mypage/MypageViewModel.kt +++ b/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/mypage/MypageViewModel.kt @@ -1,13 +1,6 @@ package com.toyou.toyouandroid.presentation.fragment.mypage -import androidx.lifecycle.LiveData -import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel class MypageViewModel : ViewModel() { - - private val _text = MutableLiveData().apply { - value = "This is mypage Fragment" - } - val text: LiveData = _text } \ No newline at end of file From 02c8afd6d27bd4de4acb3a2290cf09b73986c9d3 Mon Sep 17 00:00:00 2001 From: Daemon Jung Date: Tue, 30 Jul 2024 19:28:45 +0900 Subject: [PATCH 23/48] =?UTF-8?q?[design]=20=ED=9A=8C=EC=9B=90=ED=83=88?= =?UTF-8?q?=ED=87=B4,=20=EB=A1=9C=EA=B7=B8=EC=95=84=EC=9B=83=20=EB=B2=84?= =?UTF-8?q?=ED=8A=BC=20=EC=9D=8C=EC=98=81=20=EC=A0=9C=EA=B1=B0=20#30?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/layout/fragment_mypage.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/res/layout/fragment_mypage.xml b/app/src/main/res/layout/fragment_mypage.xml index 10d23ad4..0f85cb23 100644 --- a/app/src/main/res/layout/fragment_mypage.xml +++ b/app/src/main/res/layout/fragment_mypage.xml @@ -248,6 +248,7 @@ android:id="@+id/mypage_signout_btn" android:layout_width="92dp" android:layout_height="33dp" + android:stateListAnimator="@null" android:text="@string/mypage_signout" android:textColor="@color/black" style="@style/gangwon15" @@ -259,6 +260,7 @@ android:id="@+id/mypage_logout_btn" android:layout_width="92dp" android:layout_height="33dp" + android:stateListAnimator="@null" android:text="@string/mypage_logout" android:textColor="@color/black" style="@style/gangwon15" From 7c4a7a7f5caeefc5b2b919a90668d47ee24d8d21 Mon Sep 17 00:00:00 2001 From: Daemon Jung Date: Tue, 30 Jul 2024 19:30:02 +0900 Subject: [PATCH 24/48] =?UTF-8?q?[feature]=20=ED=9A=8C=EC=9B=90=EA=B0=80?= =?UTF-8?q?=EC=9E=85=20viewmodel=20=EC=9E=AC=ED=99=9C=EC=9A=A9=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EB=A7=88=EC=9D=B4=ED=8E=98=EC=9D=B4=EC=A7=80=20?= =?UTF-8?q?=EB=8B=89=EB=84=A4=EC=9E=84=20=EC=88=98=EC=A0=95=ED=99=94?= =?UTF-8?q?=EB=A9=B4=20=EA=B5=AC=EC=84=B1=20#30?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fragment/mypage/ProfileFragment.kt | 75 +++++++- .../onboarding/SignupNicknameFragment.kt | 6 + .../onboarding/SignupNicknameViewModel.kt | 33 +++- app/src/main/res/layout/fragment_profile.xml | 177 ++++++++++++++++-- 4 files changed, 267 insertions(+), 24 deletions(-) diff --git a/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/mypage/ProfileFragment.kt b/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/mypage/ProfileFragment.kt index 7cae2d25..096830b6 100644 --- a/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/mypage/ProfileFragment.kt +++ b/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/mypage/ProfileFragment.kt @@ -1,21 +1,34 @@ package com.toyou.toyouandroid.presentation.fragment.mypage +import com.toyou.toyouandroid.presentation.fragment.onboarding.SignupNicknameViewModel import android.os.Bundle +import android.text.Editable +import android.text.TextWatcher import android.view.LayoutInflater +import android.view.MotionEvent import android.view.View import android.view.ViewGroup +import android.view.inputmethod.InputMethodManager import androidx.fragment.app.Fragment +import androidx.fragment.app.activityViewModels import androidx.navigation.NavController -import androidx.navigation.Navigation +import androidx.navigation.fragment.findNavController +import com.toyou.toyouandroid.R import com.toyou.toyouandroid.databinding.FragmentProfileBinding +import com.toyou.toyouandroid.presentation.base.MainActivity +import com.toyou.toyouandroid.presentation.viewmodel.HomeViewModel +import com.toyou.toyouandroid.presentation.viewmodel.ViewModelManager class ProfileFragment : Fragment() { private lateinit var navController: NavController - private var _binding: FragmentProfileBinding? = null private val binding: FragmentProfileBinding get() = requireNotNull(_binding){"FragmentProfileBinding -> null"} + private val viewModel: SignupNicknameViewModel by activityViewModels() + private val nicknameViewModel: SignupNicknameViewModel by activityViewModels() + private val homeViewModel: HomeViewModel by activityViewModels() + private lateinit var viewModelManager: ViewModelManager override fun onCreateView( inflater: LayoutInflater, @@ -24,13 +37,69 @@ class ProfileFragment : Fragment() { ): View { _binding = FragmentProfileBinding.inflate(inflater, container, false) + binding.viewModel = viewModel + binding.lifecycleOwner = this + + binding.signupNicknameInput.setText("") + viewModel.resetNicknameEditState() return binding.root } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - navController = Navigation.findNavController(view) + viewModelManager = ViewModelManager(nicknameViewModel, homeViewModel) + + (requireActivity() as MainActivity).hideBottomNavigation(true) + + // navController 초기화 + navController = findNavController() + + binding.signupNicknameBackBtn.setOnClickListener { + navController.navigate(R.id.action_navigation_profile_to_mypage_fragment) + } + + binding.signupNicknameInput.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {} + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + val length = s?.length ?: 0 + viewModel.updateTextCount(length) + viewModel.duplicateBtnActivate() + viewModel.updateLength15(length) + } + + override fun afterTextChanged(s: Editable?) { + val nickname = s?.toString() ?: "" + viewModel.setNickname(nickname) + } + }) + + binding.signupNicknameBtn.setOnClickListener{ + navController.navigate(R.id.action_navigation_profile_to_mypage_fragment) + } + + binding.signupAgreeNicknameDoublecheckBtn.setOnClickListener { + viewModel.checkDuplicate() + hideKeyboard() + } + + binding.root.setOnTouchListener { v, event -> + if (event.action == MotionEvent.ACTION_DOWN) { + hideKeyboard() + v.performClick() + } + false + } + + binding.root.setOnClickListener { + hideKeyboard() + } + } + + private fun hideKeyboard() { + val imm = requireActivity().getSystemService(InputMethodManager::class.java) + imm.hideSoftInputFromWindow(view?.windowToken, 0) } override fun onDestroyView() { diff --git a/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/onboarding/SignupNicknameFragment.kt b/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/onboarding/SignupNicknameFragment.kt index ef14e175..0bd694a1 100644 --- a/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/onboarding/SignupNicknameFragment.kt +++ b/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/onboarding/SignupNicknameFragment.kt @@ -15,6 +15,8 @@ import androidx.navigation.fragment.findNavController import com.toyou.toyouandroid.R import com.toyou.toyouandroid.databinding.FragmentSignupnicknameBinding import com.toyou.toyouandroid.presentation.base.MainActivity +import com.toyou.toyouandroid.presentation.viewmodel.HomeViewModel +import com.toyou.toyouandroid.presentation.viewmodel.ViewModelManager class SignupNicknameFragment : Fragment() { @@ -23,6 +25,9 @@ class SignupNicknameFragment : Fragment() { private val binding: FragmentSignupnicknameBinding get() = requireNotNull(_binding){"FragmentSignupnicknameBinding -> null"} private val viewModel: SignupNicknameViewModel by activityViewModels() + private val nicknameViewModel: SignupNicknameViewModel by activityViewModels() + private val homeViewModel: HomeViewModel by activityViewModels() + private lateinit var viewModelManager: ViewModelManager override fun onCreateView( inflater: LayoutInflater, @@ -39,6 +44,7 @@ class SignupNicknameFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + viewModelManager = ViewModelManager(nicknameViewModel, homeViewModel) (requireActivity() as MainActivity).hideBottomNavigation(true) diff --git a/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/onboarding/SignupNicknameViewModel.kt b/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/onboarding/SignupNicknameViewModel.kt index 7adfb7f4..af120c46 100644 --- a/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/onboarding/SignupNicknameViewModel.kt +++ b/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/onboarding/SignupNicknameViewModel.kt @@ -7,6 +7,12 @@ import com.toyou.toyouandroid.R class SignupNicknameViewModel : ViewModel() { + private val _title = MutableLiveData() + val title: LiveData get() = _title + + private val _backButtonAction = MutableLiveData<() -> Unit>() + val backButtonAction: LiveData<() -> Unit> get() = _backButtonAction + private val _textCount = MutableLiveData("0/15") val textCount: LiveData get() = _textCount @@ -53,10 +59,15 @@ class SignupNicknameViewModel : ViewModel() { } val nextButtonBackground: LiveData = _nextButtonBackground + private val _nickname = MutableLiveData() + val nickname: LiveData get() = _nickname + init { inputText.observeForever { text -> _isDuplicateCheckEnabled.value = !text.isNullOrEmpty() } + _title.value = "회원가입" +// _backButtonAction.value = { /* 회원가입 화면에서의 back 버튼 로직 */ } } fun checkDuplicate() { @@ -83,13 +94,19 @@ class SignupNicknameViewModel : ViewModel() { } } - private val _nickname = MutableLiveData() - val nickname: LiveData get() = _nickname - fun setNickname(newNickname: String) { _nickname.value = newNickname } + fun setForEditNickname() { + _title.value = "프로필 수정" + _backButtonAction.value = { /* 닉네임 수정 화면에서의 back 버튼 로직 */ } + } + + fun onBackButtonClicked() { + _backButtonAction.value?.invoke() + } + fun resetState() { _duplicateCheckMessage.value = "중복된 닉네임인지 확인해주세요" _duplicateCheckMessageColor.value = 0xFF000000.toInt() @@ -100,4 +117,14 @@ class SignupNicknameViewModel : ViewModel() { _duplicateCheckButtonTextColor.value = 0xFFA6A6A6.toInt() _duplicateCheckButtonBackground.value = R.drawable.next_button } + + fun resetNicknameEditState() { + _duplicateCheckMessage.value = "중복된 닉네임인지 확인해주세요" + _duplicateCheckMessageColor.value = 0xFF000000.toInt() + _isNextButtonEnabled.value = false + _nextButtonTextColor.value = 0xFFA6A6A6.toInt() + _nextButtonBackground.value = R.drawable.next_button + _duplicateCheckButtonTextColor.value = 0xFFA6A6A6.toInt() + _duplicateCheckButtonBackground.value = R.drawable.next_button + } } \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_profile.xml b/app/src/main/res/layout/fragment_profile.xml index 7a49a355..6382e571 100644 --- a/app/src/main/res/layout/fragment_profile.xml +++ b/app/src/main/res/layout/fragment_profile.xml @@ -1,19 +1,160 @@ - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From b2e2cac6f4e15cacbc3a1f40d4649c1430174536 Mon Sep 17 00:00:00 2001 From: Daemon Jung Date: Tue, 30 Jul 2024 20:59:49 +0900 Subject: [PATCH 25/48] =?UTF-8?q?[feature]=20=EA=B8=B0=EB=A1=9D=20?= =?UTF-8?q?=EB=8B=89=EB=84=A4=EC=9E=84=20=EA=B8=80=EC=9E=90=EC=88=98=20?= =?UTF-8?q?=EC=A0=9C=ED=95=9C=20#30?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fragment/calendar/CalendarFragment.kt | 16 ++++++++-------- .../toyou/toyouandroid/utils/BindingAdapters.kt | 8 ++++++++ .../res/layout/item_calendar_friend_stamp.xml | 7 +++++-- 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/calendar/CalendarFragment.kt b/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/calendar/CalendarFragment.kt index cfae8e87..82afc96f 100644 --- a/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/calendar/CalendarFragment.kt +++ b/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/calendar/CalendarFragment.kt @@ -48,18 +48,18 @@ class CalendarFragment : Fragment() { CalendarItem(R.drawable.home_stamp_option_normal, "현정"), CalendarItem(R.drawable.home_stamp_option_anxiety, "유은"), CalendarItem(R.drawable.home_stamp_option_exciting, "태연"), - CalendarItem(R.drawable.home_stamp_option_normal, "태연"), - CalendarItem(R.drawable.home_stamp_option_exciting, "승원"), - CalendarItem(R.drawable.home_stamp_option_happy, "현정"), - CalendarItem(R.drawable.home_stamp_option_anxiety, "유은"), + CalendarItem(R.drawable.home_stamp_option_normal, "태연킹왕짱"), + CalendarItem(R.drawable.home_stamp_option_exciting, "승원킹왕짱"), + CalendarItem(R.drawable.home_stamp_option_happy, "현정킹왕짱"), + CalendarItem(R.drawable.home_stamp_option_anxiety, "유은킹왕짱"), CalendarItem(R.drawable.home_stamp_option_normal, "태연"), CalendarItem(R.drawable.home_stamp_option_upset, "승원"), CalendarItem(R.drawable.home_stamp_option_exciting, "현정"), CalendarItem(R.drawable.home_stamp_option_normal, "유은"), - CalendarItem(R.drawable.home_stamp_option_anxiety, "태연"), - CalendarItem(R.drawable.home_stamp_option_happy, "승원"), - CalendarItem(R.drawable.home_stamp_option_normal, "현정"), - CalendarItem(R.drawable.home_stamp_option_anxiety, "유은"), + CalendarItem(R.drawable.home_stamp_option_anxiety, "태연킹"), + CalendarItem(R.drawable.home_stamp_option_happy, "승원킹"), + CalendarItem(R.drawable.home_stamp_option_normal, "현정킹"), + CalendarItem(R.drawable.home_stamp_option_anxiety, "유은킹"), CalendarItem(R.drawable.home_stamp_option_exciting, "태연"), ) diff --git a/app/src/main/java/com/toyou/toyouandroid/utils/BindingAdapters.kt b/app/src/main/java/com/toyou/toyouandroid/utils/BindingAdapters.kt index 8a3bb97a..46f705ae 100644 --- a/app/src/main/java/com/toyou/toyouandroid/utils/BindingAdapters.kt +++ b/app/src/main/java/com/toyou/toyouandroid/utils/BindingAdapters.kt @@ -3,6 +3,7 @@ package com.toyou.toyouandroid.utils import android.graphics.BitmapFactory import android.widget.Button import android.widget.ImageView +import android.widget.TextView import androidx.appcompat.widget.AppCompatButton import androidx.databinding.BindingAdapter import androidx.lifecycle.LiveData @@ -27,4 +28,11 @@ fun loadImage(view: ImageView, imagePath: String) { @BindingAdapter("android:setBackground") fun setBackground(button: AppCompatButton, resource: Int?) { resource?.let { button.setBackgroundResource(it) } +} + +@BindingAdapter("formattedNickname") +fun setFormattedNickname(textView: TextView, nickname: String?) { + nickname?.let { + textView.text = if (it.length > 3) "${it.substring(0, 3)}..." else it + } } \ No newline at end of file diff --git a/app/src/main/res/layout/item_calendar_friend_stamp.xml b/app/src/main/res/layout/item_calendar_friend_stamp.xml index 04561da6..fa012803 100644 --- a/app/src/main/res/layout/item_calendar_friend_stamp.xml +++ b/app/src/main/res/layout/item_calendar_friend_stamp.xml @@ -24,10 +24,13 @@ Date: Tue, 30 Jul 2024 21:00:25 +0900 Subject: [PATCH 26/48] =?UTF-8?q?[design]=20=EA=B8=B0=EB=A1=9D=20=ED=83=AD?= =?UTF-8?q?=20=EC=A0=84=EC=B2=B4=20=EC=8A=A4=ED=81=AC=EB=A1=A4,=20?= =?UTF-8?q?=EC=A0=9C=ED=95=9C=EC=84=A0,=20=ED=8F=B0=ED=8A=B8=20=EC=A1=B0?= =?UTF-8?q?=EC=A0=95=20#30?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/layout/fragment_calendar.xml | 127 ++++++++++-------- 1 file changed, 71 insertions(+), 56 deletions(-) diff --git a/app/src/main/res/layout/fragment_calendar.xml b/app/src/main/res/layout/fragment_calendar.xml index 90a98171..03c2095e 100644 --- a/app/src/main/res/layout/fragment_calendar.xml +++ b/app/src/main/res/layout/fragment_calendar.xml @@ -1,76 +1,91 @@ - + android:layout_height="wrap_content" + android:background="@drawable/background_white" + android:orientation="vertical" + tools:context=".presentation.fragment.calendar.CalendarFragment"> - + android:layout_height="wrap_content"> - + android:layout_marginTop="57dp" + app:tabIndicatorFullWidth="false" + app:tabIndicatorColor="@android:color/black" + app:tabSelectedTextColor="@android:color/black" + app:tabTextColor="@android:color/black" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:tabTextAppearance="@style/sc_r15"> - + - + - + - + app:layout_constraintTop_toBottomOf="@+id/tabLayout" /> - - - + app:layout_constraintTop_toBottomOf="@+id/tabLayout"> - + - \ No newline at end of file + + + + + + + + \ No newline at end of file From 4c6a1bf9ada19dd95a8491c62bf1b07f3c796357 Mon Sep 17 00:00:00 2001 From: Daemon Jung Date: Tue, 30 Jul 2024 21:00:45 +0900 Subject: [PATCH 27/48] =?UTF-8?q?[design]=20=EA=B0=90=EC=A0=95=EC=9A=B0?= =?UTF-8?q?=ED=91=9C=20=EC=84=A0=ED=83=9D=20=ED=99=94=EB=A9=B4=20=ED=8F=B0?= =?UTF-8?q?=ED=8A=B8=20=EC=A1=B0=EC=A0=95=20#30?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/layout/fragment_home_option.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/layout/fragment_home_option.xml b/app/src/main/res/layout/fragment_home_option.xml index 61c47361..ce293683 100644 --- a/app/src/main/res/layout/fragment_home_option.xml +++ b/app/src/main/res/layout/fragment_home_option.xml @@ -66,7 +66,7 @@ android:layout_height="wrap_content" android:text="@string/home_stamp_subtitle" android:textColor="@color/black" - style="@style/gangwon15" + style="@style/sc_l8" android:layout_marginTop="14dp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" From 065583f2412284b78b627355c1289681637e0923 Mon Sep 17 00:00:00 2001 From: Daemon Jung Date: Tue, 30 Jul 2024 21:01:08 +0900 Subject: [PATCH 28/48] =?UTF-8?q?[chore]=20=EA=B0=90=EC=A0=95=EC=9A=B0?= =?UTF-8?q?=ED=91=9C=20=EA=B2=B0=EA=B3=BC=20=ED=99=94=EB=A9=B4=20=EC=8B=9C?= =?UTF-8?q?=EA=B0=84=20=EC=B6=95=EC=86=8C=20#30?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/fragment/emotionstamp/HomeResultFragment.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/emotionstamp/HomeResultFragment.kt b/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/emotionstamp/HomeResultFragment.kt index 8a13e3b0..519c5e43 100644 --- a/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/emotionstamp/HomeResultFragment.kt +++ b/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/emotionstamp/HomeResultFragment.kt @@ -46,7 +46,7 @@ class HomeResultFragment : Fragment() { binding.homeResultTv.text = text ObjectAnimator.ofFloat(binding.homeResultTv, "alpha", 0f, 1f).apply { - duration = 3000 + duration = 2000 interpolator = DecelerateInterpolator() start() } From e8a310876ea7e60eb5c8f87b76e69e18e2a600ac Mon Sep 17 00:00:00 2001 From: Daemon Jung Date: Tue, 30 Jul 2024 21:02:15 +0900 Subject: [PATCH 29/48] =?UTF-8?q?[chore]=20=EB=A7=88=EC=9D=B4=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=ED=94=84=EB=A1=9C=ED=95=84=20=EA=B8=B0?= =?UTF-8?q?=EB=B3=B8=EC=9C=BC=EB=A1=9C=20=EA=B3=A0=EC=A0=95=20#30?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/fragment/mypage/MypageFragment.kt | 4 ---- 1 file changed, 4 deletions(-) diff --git a/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/mypage/MypageFragment.kt b/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/mypage/MypageFragment.kt index 84e8f4da..0a2fbc95 100644 --- a/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/mypage/MypageFragment.kt +++ b/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/mypage/MypageFragment.kt @@ -77,10 +77,6 @@ class MypageFragment : Fragment() { binding.profileNickname.text = nickname } - homeViewModel.mypageEmotionStamp.observe(viewLifecycleOwner) { emotion -> - binding.mypageEmotionStamp.setImageResource(emotion) - } - binding.mypageSignoutBtn.setOnClickListener { mypageDialogViewModel.setDialogData( title = "정말 탈퇴하시겠어요?", From 6df3e10968e3ca9480b4b69fc6deb679d0e6a0ca Mon Sep 17 00:00:00 2001 From: Daemon Jung Date: Tue, 30 Jul 2024 21:02:37 +0900 Subject: [PATCH 30/48] =?UTF-8?q?[chore]=20=EC=95=8C=EB=A6=BC=EB=A9=94?= =?UTF-8?q?=EC=8B=9C=EC=A7=80=20=ED=81=AC=EA=B8=B0=20=EC=A1=B0=EC=A0=95=20?= =?UTF-8?q?#30?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/fragment/notice/NoticeAdapter.kt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/notice/NoticeAdapter.kt b/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/notice/NoticeAdapter.kt index 7402794c..1926ba40 100644 --- a/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/notice/NoticeAdapter.kt +++ b/app/src/main/java/com/toyou/toyouandroid/presentation/fragment/notice/NoticeAdapter.kt @@ -85,6 +85,11 @@ class NoticeAdapter(private val items: MutableList) : binding.noticeCardCheckDelete.setOnClickListener { removeItem(this.layoutPosition) } + + val layoutParams = binding.root.layoutParams + layoutParams.width = (binding.root.context.resources.displayMetrics.widthPixels * 5 / 6) + binding.root.layoutParams = layoutParams + binding.executePendingBindings() } } From 8a6c36dc198ae8077b6d047a48922ae4253894cf Mon Sep 17 00:00:00 2001 From: Daemon Jung Date: Tue, 30 Jul 2024 21:03:12 +0900 Subject: [PATCH 31/48] =?UTF-8?q?[design]=20=EC=B9=9C=EA=B5=AC=EC=88=98?= =?UTF-8?q?=EB=9D=BD=20=EB=B2=84=ED=8A=BC=20=EC=9D=8C=EC=98=81=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0=20#30?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/layout/item_notice_friend_request.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/layout/item_notice_friend_request.xml b/app/src/main/res/layout/item_notice_friend_request.xml index 9a0a4758..2806eb51 100644 --- a/app/src/main/res/layout/item_notice_friend_request.xml +++ b/app/src/main/res/layout/item_notice_friend_request.xml @@ -62,6 +62,7 @@ android:id="@+id/notice_friend_request_btn" android:layout_width="44dp" android:layout_height="18dp" + android:stateListAnimator="@null" android:background="@drawable/notice_activated_btn" android:text="@string/notice_friend_request_btn" android:textColor="@color/black" From 219d714f6af8c5a0559513fa2cf514524791a3c7 Mon Sep 17 00:00:00 2001 From: Daemon Jung Date: Wed, 31 Jul 2024 23:53:56 +0900 Subject: [PATCH 32/48] =?UTF-8?q?[design]=20=EC=BA=98=EB=A6=B0=EB=8D=94=20?= =?UTF-8?q?=EC=9A=94=EC=9D=BC,=20=EB=82=A0=EC=A7=9C=20=EC=95=84=EC=9D=B4?= =?UTF-8?q?=ED=85=9C=20UI=20#14?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/layout/calendar_item.xml | 29 +++++++++++++++++++ app/src/main/res/layout/item_dayoftheweek.xml | 28 ++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 app/src/main/res/layout/calendar_item.xml create mode 100644 app/src/main/res/layout/item_dayoftheweek.xml diff --git a/app/src/main/res/layout/calendar_item.xml b/app/src/main/res/layout/calendar_item.xml new file mode 100644 index 00000000..b4abfa57 --- /dev/null +++ b/app/src/main/res/layout/calendar_item.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_dayoftheweek.xml b/app/src/main/res/layout/item_dayoftheweek.xml new file mode 100644 index 00000000..b77739a1 --- /dev/null +++ b/app/src/main/res/layout/item_dayoftheweek.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + \ No newline at end of file From e047f8e0196a280116f2c13d463e24e538c2db13 Mon Sep 17 00:00:00 2001 From: Daemon Jung Date: Wed, 31 Jul 2024 23:55:55 +0900 Subject: [PATCH 33/48] =?UTF-8?q?[feature]=20=EC=BA=98=EB=A6=B0=EB=8D=94?= =?UTF-8?q?=20=EC=8B=A4=EC=8B=9C=EA=B0=84=20=EB=82=A0=EC=A7=9C=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=20=EB=A1=9C=EC=A7=81=20#14?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/toyou/toyouandroid/utils/Dates.kt | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 app/src/main/java/com/toyou/toyouandroid/utils/Dates.kt diff --git a/app/src/main/java/com/toyou/toyouandroid/utils/Dates.kt b/app/src/main/java/com/toyou/toyouandroid/utils/Dates.kt new file mode 100644 index 00000000..1d61c9f3 --- /dev/null +++ b/app/src/main/java/com/toyou/toyouandroid/utils/Dates.kt @@ -0,0 +1,54 @@ +package com.toyou.toyouandroid.utils + +import java.util.Calendar +import java.util.Date + +object Dates { + + fun generateDates(calendar: Calendar): List { + val dates = mutableListOf() + val cal = calendar.clone() as Calendar + cal.set(Calendar.DAY_OF_MONTH, 1) + + // 달의 첫 번째 날의 요일 계산 (월요일이 시작일인 경우) + val firstDayOfWeek = (cal.get(Calendar.DAY_OF_WEEK) + 5) % 7 + + // 전월의 마지막 일로 채우기 + cal.add(Calendar.DAY_OF_MONTH, -firstDayOfWeek) + for (i in 0 until firstDayOfWeek) { + dates.add(cal.time) + cal.add(Calendar.DAY_OF_MONTH, 1) + } + + // 현재 달의 일자 추가 + val daysInMonth = cal.getActualMaximum(Calendar.DAY_OF_MONTH) + for (i in 0 until daysInMonth) { + dates.add(cal.time) + cal.add(Calendar.DAY_OF_MONTH, 1) + } + + // 다음 달의 처음 일로 채우기 + val lastDayOfWeek = (cal.get(Calendar.DAY_OF_WEEK) - Calendar.MONDAY + 6) % 7 + val remainingDays = 6 - lastDayOfWeek + + // 마지막 날이 일요일이 아니거나, 마지막 날이 일요일이지만 다음 달 1일이 월요일이 아닌 경우에만 채우기 + if (lastDayOfWeek != 6 || (remainingDays == 0 && cal.get(Calendar.DAY_OF_MONTH) != 1)) { + for (i in 0 until remainingDays) { + dates.add(cal.time) + cal.add(Calendar.DAY_OF_MONTH, 1) + } + } + + return dates + } + + fun generateDatesForMonths(calendar: Calendar, monthsBefore: Int, monthsAfter: Int): List { + val dates = mutableListOf() + for (i in -monthsBefore..monthsAfter) { + val cal = calendar.clone() as Calendar + cal.add(Calendar.MONTH, i) + dates.addAll(generateDates(cal)) + } + return dates + } +} \ No newline at end of file From 67a7cfebc3907262d8b3f28ae405fdc11e220486 Mon Sep 17 00:00:00 2001 From: Daemon Jung Date: Wed, 31 Jul 2024 23:58:46 +0900 Subject: [PATCH 34/48] =?UTF-8?q?[design]=20=EC=BA=98=EB=A6=B0=EB=8D=94=20?= =?UTF-8?q?RecyclerView=202=EA=B0=9C=EB=A1=9C=20=EA=B5=AC=EC=84=B1=20#14?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/layout/calendar_page.xml | 30 +++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 app/src/main/res/layout/calendar_page.xml diff --git a/app/src/main/res/layout/calendar_page.xml b/app/src/main/res/layout/calendar_page.xml new file mode 100644 index 00000000..838ba2f3 --- /dev/null +++ b/app/src/main/res/layout/calendar_page.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + \ No newline at end of file From 02bad2b3fb14b92ec25c16c8d8076fb3f8f431e8 Mon Sep 17 00:00:00 2001 From: Daemon Jung Date: Wed, 31 Jul 2024 23:59:01 +0900 Subject: [PATCH 35/48] =?UTF-8?q?[design]=20=EC=BA=98=EB=A6=B0=EB=8D=94=20?= =?UTF-8?q?=ED=83=AD=20=EA=B5=AC=EC=84=B1=20#14?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/layout/fragment_calendar.xml | 96 +++++++++++++++++-- 1 file changed, 86 insertions(+), 10 deletions(-) diff --git a/app/src/main/res/layout/fragment_calendar.xml b/app/src/main/res/layout/fragment_calendar.xml index 03c2095e..23127ebc 100644 --- a/app/src/main/res/layout/fragment_calendar.xml +++ b/app/src/main/res/layout/fragment_calendar.xml @@ -51,30 +51,105 @@ android:id="@+id/fragment_calendar" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:layout_marginTop="47dp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@+id/tabLayout"> - + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + + + + + + + +