From f2452fdc725a55c678aa11b9a226d2982a935994 Mon Sep 17 00:00:00 2001 From: Choi Min Young Date: Wed, 3 Jan 2024 20:16:06 +0900 Subject: [PATCH 001/115] =?UTF-8?q?[feat]=20#12=20=EB=84=A4=EB=B9=84?= =?UTF-8?q?=EB=B0=94=20=EC=BB=A4=EC=8A=A4=ED=85=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/res/drawable/ic_clip_unclicked.xml | 21 +++++++++++++++++ .../main/res/drawable/ic_home_unclicked.xml | 16 +++++++++++++ .../src/main/res/drawable/ic_my_unclicked.xml | 13 +++++++++++ .../main/res/drawable/ic_timer_unclicked.xml | 13 +++++++++++ .../src/main/res/drawable/sel_bnv_clip.xml | 10 ++++++++ .../src/main/res/drawable/sel_bnv_home.xml | 11 +++++++++ .../src/main/res/drawable/sel_bnv_my.xml | 10 ++++++++ .../main/res/drawable/sel_bnv_text_color.xml | 5 ++++ .../src/main/res/drawable/sel_bnv_timer.xml | 5 ++++ .../src/main/res/layout/activity_main.xml | 7 ++++-- .../src/main/res/menu/main_nav_menu.xml | 23 +++++++++++-------- 11 files changed, 123 insertions(+), 11 deletions(-) create mode 100644 feature/mainfeature/src/main/res/drawable/ic_clip_unclicked.xml create mode 100644 feature/mainfeature/src/main/res/drawable/ic_home_unclicked.xml create mode 100644 feature/mainfeature/src/main/res/drawable/ic_my_unclicked.xml create mode 100644 feature/mainfeature/src/main/res/drawable/ic_timer_unclicked.xml create mode 100644 feature/mainfeature/src/main/res/drawable/sel_bnv_clip.xml create mode 100644 feature/mainfeature/src/main/res/drawable/sel_bnv_home.xml create mode 100644 feature/mainfeature/src/main/res/drawable/sel_bnv_my.xml create mode 100644 feature/mainfeature/src/main/res/drawable/sel_bnv_text_color.xml create mode 100644 feature/mainfeature/src/main/res/drawable/sel_bnv_timer.xml diff --git a/feature/mainfeature/src/main/res/drawable/ic_clip_unclicked.xml b/feature/mainfeature/src/main/res/drawable/ic_clip_unclicked.xml new file mode 100644 index 00000000..3f5592a1 --- /dev/null +++ b/feature/mainfeature/src/main/res/drawable/ic_clip_unclicked.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + diff --git a/feature/mainfeature/src/main/res/drawable/ic_home_unclicked.xml b/feature/mainfeature/src/main/res/drawable/ic_home_unclicked.xml new file mode 100644 index 00000000..f1bc01c5 --- /dev/null +++ b/feature/mainfeature/src/main/res/drawable/ic_home_unclicked.xml @@ -0,0 +1,16 @@ + + + + diff --git a/feature/mainfeature/src/main/res/drawable/ic_my_unclicked.xml b/feature/mainfeature/src/main/res/drawable/ic_my_unclicked.xml new file mode 100644 index 00000000..67f0d5e1 --- /dev/null +++ b/feature/mainfeature/src/main/res/drawable/ic_my_unclicked.xml @@ -0,0 +1,13 @@ + + + + + + diff --git a/feature/mainfeature/src/main/res/drawable/ic_timer_unclicked.xml b/feature/mainfeature/src/main/res/drawable/ic_timer_unclicked.xml new file mode 100644 index 00000000..24c71c91 --- /dev/null +++ b/feature/mainfeature/src/main/res/drawable/ic_timer_unclicked.xml @@ -0,0 +1,13 @@ + + + + + + diff --git a/feature/mainfeature/src/main/res/drawable/sel_bnv_clip.xml b/feature/mainfeature/src/main/res/drawable/sel_bnv_clip.xml new file mode 100644 index 00000000..62303d42 --- /dev/null +++ b/feature/mainfeature/src/main/res/drawable/sel_bnv_clip.xml @@ -0,0 +1,10 @@ + + + + + diff --git a/feature/mainfeature/src/main/res/drawable/sel_bnv_home.xml b/feature/mainfeature/src/main/res/drawable/sel_bnv_home.xml new file mode 100644 index 00000000..e0fd41e4 --- /dev/null +++ b/feature/mainfeature/src/main/res/drawable/sel_bnv_home.xml @@ -0,0 +1,11 @@ + + + + + diff --git a/feature/mainfeature/src/main/res/drawable/sel_bnv_my.xml b/feature/mainfeature/src/main/res/drawable/sel_bnv_my.xml new file mode 100644 index 00000000..6b3dfcb6 --- /dev/null +++ b/feature/mainfeature/src/main/res/drawable/sel_bnv_my.xml @@ -0,0 +1,10 @@ + + + + + diff --git a/feature/mainfeature/src/main/res/drawable/sel_bnv_text_color.xml b/feature/mainfeature/src/main/res/drawable/sel_bnv_text_color.xml new file mode 100644 index 00000000..cc71e979 --- /dev/null +++ b/feature/mainfeature/src/main/res/drawable/sel_bnv_text_color.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/feature/mainfeature/src/main/res/drawable/sel_bnv_timer.xml b/feature/mainfeature/src/main/res/drawable/sel_bnv_timer.xml new file mode 100644 index 00000000..d037ffcd --- /dev/null +++ b/feature/mainfeature/src/main/res/drawable/sel_bnv_timer.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/feature/mainfeature/src/main/res/layout/activity_main.xml b/feature/mainfeature/src/main/res/layout/activity_main.xml index 81ff76ad..338a0f33 100644 --- a/feature/mainfeature/src/main/res/layout/activity_main.xml +++ b/feature/mainfeature/src/main/res/layout/activity_main.xml @@ -5,7 +5,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> - + + app:menu="@menu/main_nav_menu" + app:itemTextColor="@drawable/sel_bnv_text_color" + app:itemActiveIndicatorStyle="@android:color/transparent" /> diff --git a/feature/mainfeature/src/main/res/menu/main_nav_menu.xml b/feature/mainfeature/src/main/res/menu/main_nav_menu.xml index e0ebdbc0..c40cfafc 100644 --- a/feature/mainfeature/src/main/res/menu/main_nav_menu.xml +++ b/feature/mainfeature/src/main/res/menu/main_nav_menu.xml @@ -1,14 +1,17 @@ - + + android:icon="@drawable/sel_bnv_home" + android:title="@string/text_home" + app:iconPadding="7dp" /> + android:icon="@drawable/sel_bnv_clip" + android:title="@string/text_clip" + app:iconPadding="7dp"/> + android:icon="@drawable/sel_bnv_timer" + android:title="@string/text_timer" + app:iconPadding="7dp"/> + android:icon="@drawable/sel_bnv_my" + android:title="@string/text_my" + app:iconPadding="7dp"/> From fb77784eed1ac323d69f16ff701544c3471ab4f0 Mon Sep 17 00:00:00 2001 From: Choi Min Young Date: Wed, 3 Jan 2024 22:03:38 +0900 Subject: [PATCH 002/115] =?UTF-8?q?[refactor]=20#12=20=EB=84=A4=EB=B9=84?= =?UTF-8?q?=EB=B0=94=20ui=20=EC=BB=A4=EC=8A=A4=ED=85=80=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mainfeature/src/main/res/layout/activity_main.xml | 11 ++++++----- .../mainfeature/src/main/res/menu/main_nav_menu.xml | 9 +++++---- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/feature/mainfeature/src/main/res/layout/activity_main.xml b/feature/mainfeature/src/main/res/layout/activity_main.xml index 338a0f33..b8844e15 100644 --- a/feature/mainfeature/src/main/res/layout/activity_main.xml +++ b/feature/mainfeature/src/main/res/layout/activity_main.xml @@ -21,15 +21,16 @@ + app:menu="@menu/main_nav_menu" /> diff --git a/feature/mainfeature/src/main/res/menu/main_nav_menu.xml b/feature/mainfeature/src/main/res/menu/main_nav_menu.xml index c40cfafc..4f6e41b1 100644 --- a/feature/mainfeature/src/main/res/menu/main_nav_menu.xml +++ b/feature/mainfeature/src/main/res/menu/main_nav_menu.xml @@ -5,28 +5,29 @@ android:id="@+id/navigation_home" android:icon="@drawable/sel_bnv_home" android:title="@string/text_home" - app:iconPadding="7dp" /> + app:iconPadding="4dp" /> + app:iconPadding="4dp" /> + app:iconPadding="4dp" /> + app:iconPadding="4dp" /> From ee682aa3ceacf55fb8b6d07e5e844ecca3dccc70 Mon Sep 17 00:00:00 2001 From: Choi Min Young Date: Wed, 3 Jan 2024 23:52:20 +0900 Subject: [PATCH 003/115] =?UTF-8?q?[refactor]=20#12=20BindingActivity=20vi?= =?UTF-8?q?ewBinding=EC=9C=BC=EB=A1=9C=20=EC=A0=84=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/org/sopt/ui/base/BindingActivity.kt | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/core/ui/src/main/java/org/sopt/ui/base/BindingActivity.kt b/core/ui/src/main/java/org/sopt/ui/base/BindingActivity.kt index 1f1dbb74..c78bd9e5 100644 --- a/core/ui/src/main/java/org/sopt/ui/base/BindingActivity.kt +++ b/core/ui/src/main/java/org/sopt/ui/base/BindingActivity.kt @@ -1,23 +1,22 @@ package org.sopt.ui.base import android.os.Bundle +import android.view.LayoutInflater import android.view.MotionEvent import android.view.View -import androidx.annotation.LayoutRes import androidx.appcompat.app.AppCompatActivity -import androidx.databinding.DataBindingUtil -import androidx.databinding.ViewDataBinding +import androidx.viewbinding.ViewBinding import org.sopt.ui.context.hideKeyboard -abstract class BindingActivity( - @LayoutRes private val layoutRes: Int, +abstract class BindingActivity( + val bindingFactory: (LayoutInflater) -> T, ) : AppCompatActivity() { protected lateinit var binding: T override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - binding = DataBindingUtil.setContentView(this, layoutRes) - binding.lifecycleOwner = this + binding = bindingFactory(layoutInflater) + setContentView(binding.root) } override fun dispatchTouchEvent(ev: MotionEvent?): Boolean { From 674d28d0a0fea1105530887863959f9200f143fe Mon Sep 17 00:00:00 2001 From: Choi Min Young Date: Wed, 3 Jan 2024 23:55:44 +0900 Subject: [PATCH 004/115] =?UTF-8?q?[refactor]=20#12=20BindingFragment=20vi?= =?UTF-8?q?ewBinding=EC=9C=BC=EB=A1=9C=20=EC=A0=84=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/ui/build.gradle.kts | 1 + .../java/org/sopt/ui/base/BindingFragment.kt | 17 +++++++---------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/core/ui/build.gradle.kts b/core/ui/build.gradle.kts index 02fad677..72367584 100644 --- a/core/ui/build.gradle.kts +++ b/core/ui/build.gradle.kts @@ -9,5 +9,6 @@ android { buildFeatures { dataBinding = true + viewBinding = true } } diff --git a/core/ui/src/main/java/org/sopt/ui/base/BindingFragment.kt b/core/ui/src/main/java/org/sopt/ui/base/BindingFragment.kt index 812252c3..c1fab23c 100644 --- a/core/ui/src/main/java/org/sopt/ui/base/BindingFragment.kt +++ b/core/ui/src/main/java/org/sopt/ui/base/BindingFragment.kt @@ -4,28 +4,25 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.annotation.LayoutRes -import androidx.databinding.DataBindingUtil -import androidx.databinding.ViewDataBinding import androidx.fragment.app.Fragment +import androidx.viewbinding.ViewBinding -abstract class BindingFragment( - @LayoutRes private val layoutRes: Int, -) : Fragment() { +abstract class BindingFragment : Fragment() { private var _binding: T? = null - protected val binding get() = requireNotNull(_binding) { - } + protected val binding + get() = requireNotNull(_binding) { + } override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?, ): View? { - _binding = DataBindingUtil.inflate(inflater, layoutRes, container, false) - binding.lifecycleOwner = viewLifecycleOwner + _binding = getFragmentBinding(inflater, container) return binding.root } + abstract fun getFragmentBinding(inflater: LayoutInflater, container: ViewGroup?): T override fun onDestroyView() { _binding = null super.onDestroyView() From e4cfaa5755488dd5ff75f0924ceade147693e6ba Mon Sep 17 00:00:00 2001 From: Choi Min Young Date: Thu, 4 Jan 2024 00:11:48 +0900 Subject: [PATCH 005/115] =?UTF-8?q?[refactor]=20#12=20BindingDialogFragmen?= =?UTF-8?q?t=20viewBinding=EC=9C=BC=EB=A1=9C=20=EC=A0=84=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/sopt/ui/base/BindingDialogFragment.kt | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/core/ui/src/main/java/org/sopt/ui/base/BindingDialogFragment.kt b/core/ui/src/main/java/org/sopt/ui/base/BindingDialogFragment.kt index 07630999..a1931ad3 100644 --- a/core/ui/src/main/java/org/sopt/ui/base/BindingDialogFragment.kt +++ b/core/ui/src/main/java/org/sopt/ui/base/BindingDialogFragment.kt @@ -5,14 +5,10 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.view.WindowManager -import androidx.annotation.LayoutRes -import androidx.databinding.DataBindingUtil -import androidx.databinding.ViewDataBinding import androidx.fragment.app.DialogFragment +import androidx.viewbinding.ViewBinding -abstract class BindingDialogFragment( - @LayoutRes val layoutRes: Int, -) : DialogFragment() { +abstract class BindingDialogFragment : DialogFragment() { private var _binding: T? = null protected val binding get() = requireNotNull(_binding) { { "binding object is not initialized" } } @@ -31,15 +27,16 @@ abstract class BindingDialogFragment( container: ViewGroup?, savedInstanceState: Bundle?, ): View { - _binding = DataBindingUtil.inflate(inflater, layoutRes, container, false) + _binding = getFragmentBinding(inflater, container) return binding.root } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - binding.lifecycleOwner = viewLifecycleOwner } + abstract fun getFragmentBinding(inflater: LayoutInflater, container: ViewGroup?): T + override fun onDestroyView() { _binding = null super.onDestroyView() From b975a4c0614e87dba4d35d4f798a27014d981836 Mon Sep 17 00:00:00 2001 From: Choi Min Young Date: Thu, 4 Jan 2024 00:31:46 +0900 Subject: [PATCH 006/115] =?UTF-8?q?[refactor]=20#12=20=EB=B0=94=ED=85=80?= =?UTF-8?q?=20=EB=84=A4=EB=B9=84=EB=B0=94=20=EC=83=89=EC=83=81=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- feature/mainfeature/src/main/res/layout/activity_main.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/feature/mainfeature/src/main/res/layout/activity_main.xml b/feature/mainfeature/src/main/res/layout/activity_main.xml index b8844e15..ed1a79e2 100644 --- a/feature/mainfeature/src/main/res/layout/activity_main.xml +++ b/feature/mainfeature/src/main/res/layout/activity_main.xml @@ -22,6 +22,7 @@ android:id="@+id/bnv_main" android:layout_width="match_parent" android:layout_height="72dp" + android:background="@color/white" app:itemTextAppearanceActive="@style/Typography.suit.bold_12" app:itemTextAppearanceInactive="@style/Typography.suit.bold_12" app:itemActiveIndicatorStyle="@android:color/transparent" From 49abb0dc476dabffb26630b9803d73e952d927a7 Mon Sep 17 00:00:00 2001 From: Choi Min Young Date: Thu, 4 Jan 2024 09:38:05 +0900 Subject: [PATCH 007/115] =?UTF-8?q?[refactor]=20#12=20ViewBinding=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 --- core/ui/src/main/java/org/sopt/ui/base/BindingActivity.kt | 4 ++-- .../main/java/org/sopt/ui/base/BindingDialogFragment.kt | 8 ++++---- core/ui/src/main/java/org/sopt/ui/base/BindingFragment.kt | 7 ++++--- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/core/ui/src/main/java/org/sopt/ui/base/BindingActivity.kt b/core/ui/src/main/java/org/sopt/ui/base/BindingActivity.kt index c78bd9e5..2be4df52 100644 --- a/core/ui/src/main/java/org/sopt/ui/base/BindingActivity.kt +++ b/core/ui/src/main/java/org/sopt/ui/base/BindingActivity.kt @@ -9,13 +9,13 @@ import androidx.viewbinding.ViewBinding import org.sopt.ui.context.hideKeyboard abstract class BindingActivity( - val bindingFactory: (LayoutInflater) -> T, + private val inflater: (LayoutInflater) -> T, ) : AppCompatActivity() { protected lateinit var binding: T override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - binding = bindingFactory(layoutInflater) + binding = inflater(layoutInflater) setContentView(binding.root) } diff --git a/core/ui/src/main/java/org/sopt/ui/base/BindingDialogFragment.kt b/core/ui/src/main/java/org/sopt/ui/base/BindingDialogFragment.kt index a1931ad3..78243bc7 100644 --- a/core/ui/src/main/java/org/sopt/ui/base/BindingDialogFragment.kt +++ b/core/ui/src/main/java/org/sopt/ui/base/BindingDialogFragment.kt @@ -8,7 +8,9 @@ import android.view.WindowManager import androidx.fragment.app.DialogFragment import androidx.viewbinding.ViewBinding -abstract class BindingDialogFragment : DialogFragment() { +abstract class BindingDialogFragment( + private val inflater: (LayoutInflater) -> T, + ) : DialogFragment() { private var _binding: T? = null protected val binding get() = requireNotNull(_binding) { { "binding object is not initialized" } } @@ -27,7 +29,7 @@ abstract class BindingDialogFragment : DialogFragment() { container: ViewGroup?, savedInstanceState: Bundle?, ): View { - _binding = getFragmentBinding(inflater, container) + _binding = inflater(layoutInflater) return binding.root } @@ -35,8 +37,6 @@ abstract class BindingDialogFragment : DialogFragment() { super.onViewCreated(view, savedInstanceState) } - abstract fun getFragmentBinding(inflater: LayoutInflater, container: ViewGroup?): T - override fun onDestroyView() { _binding = null super.onDestroyView() diff --git a/core/ui/src/main/java/org/sopt/ui/base/BindingFragment.kt b/core/ui/src/main/java/org/sopt/ui/base/BindingFragment.kt index c1fab23c..0d4a5ac9 100644 --- a/core/ui/src/main/java/org/sopt/ui/base/BindingFragment.kt +++ b/core/ui/src/main/java/org/sopt/ui/base/BindingFragment.kt @@ -7,7 +7,9 @@ import android.view.ViewGroup import androidx.fragment.app.Fragment import androidx.viewbinding.ViewBinding -abstract class BindingFragment : Fragment() { +abstract class BindingFragment( + private val inflater: (LayoutInflater) -> T, +) : Fragment() { private var _binding: T? = null protected val binding get() = requireNotNull(_binding) { @@ -18,11 +20,10 @@ abstract class BindingFragment : Fragment() { container: ViewGroup?, savedInstanceState: Bundle?, ): View? { - _binding = getFragmentBinding(inflater, container) + _binding = inflater(layoutInflater) return binding.root } - abstract fun getFragmentBinding(inflater: LayoutInflater, container: ViewGroup?): T override fun onDestroyView() { _binding = null super.onDestroyView() From 47f549a73438ada84f007388716fe9f53aefb372 Mon Sep 17 00:00:00 2001 From: Choi Min Young Date: Thu, 4 Jan 2024 15:23:53 +0900 Subject: [PATCH 008/115] [refactor] #12 lint --- core/ui/src/main/java/org/sopt/ui/base/BindingDialogFragment.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/ui/src/main/java/org/sopt/ui/base/BindingDialogFragment.kt b/core/ui/src/main/java/org/sopt/ui/base/BindingDialogFragment.kt index 78243bc7..b7180671 100644 --- a/core/ui/src/main/java/org/sopt/ui/base/BindingDialogFragment.kt +++ b/core/ui/src/main/java/org/sopt/ui/base/BindingDialogFragment.kt @@ -10,7 +10,7 @@ import androidx.viewbinding.ViewBinding abstract class BindingDialogFragment( private val inflater: (LayoutInflater) -> T, - ) : DialogFragment() { +) : DialogFragment() { private var _binding: T? = null protected val binding get() = requireNotNull(_binding) { { "binding object is not initialized" } } From bea935406fc2781b4693a98cf6d4295e11a8aa19 Mon Sep 17 00:00:00 2001 From: CHANGEL <107169027+CHANGEL1004@users.noreply.github.com> Date: Thu, 4 Jan 2024 17:33:54 +0900 Subject: [PATCH 009/115] Update README.md --- README.md | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index f5aec8a3..737d8529 100644 --- a/README.md +++ b/README.md @@ -1 +1,30 @@ -# Android +# TOASTER-AOS + + +더 이상 링크를 태우지 마세요. 토스트 먹듯이 간단하게! + +- 33기 DO SOPT APP-JAM (2023.12.17 ~ ) +- Development Environment : `Hedgehog | 2023.1.1` + +
+ +## AOS Developer + +| [상욱](operawook@catholic.ac.kr) | [이삭](lsls4868@gmail.com) | [채은](parkchangel@naver.com) | [민영](codingmy@naver.com) | +| :--: | :--: | :--: | :--: | +| 상욱 | 이삭 | 채은 | 민영 | +|

`타이머페이지` |

`메인페이지` `링크저장` |

`로그인, 검색` `마이페이지` |

`카테고리페이지` | + +
+ +# 💻 Code Convention +[NOTION Code Convetion Link](https://www.notion.so/dosopt/Code-Convention-da64b0be4cc043c4a923612be792ece0) +
+ +# 🔖 Branch Strategy +[NOTION Branch Strategy](https://hill-agenda-2b0.notion.site/Branch-Strategy-e3a9c5e70f6241ae9ccad544666b095c?pvs=4) +
+ +# 🎁 Git Convention +[NOTION Git Convention](https://hill-agenda-2b0.notion.site/Git-Convention-064dee5df78e4b0c9dd59d18c775a460?pvs=4) +
From 5f220cc878fae70a5c2b00478b272558a92b684c Mon Sep 17 00:00:00 2001 From: CHANGEL <107169027+CHANGEL1004@users.noreply.github.com> Date: Thu, 4 Jan 2024 17:49:33 +0900 Subject: [PATCH 010/115] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 737d8529..fd379025 100644 --- a/README.md +++ b/README.md @@ -17,14 +17,14 @@
-# 💻 Code Convention +## 💻 Code Convention [NOTION Code Convetion Link](https://www.notion.so/dosopt/Code-Convention-da64b0be4cc043c4a923612be792ece0)
-# 🔖 Branch Strategy +## 🔖 Branch Strategy [NOTION Branch Strategy](https://hill-agenda-2b0.notion.site/Branch-Strategy-e3a9c5e70f6241ae9ccad544666b095c?pvs=4)
-# 🎁 Git Convention +## 🎁 Git Convention [NOTION Git Convention](https://hill-agenda-2b0.notion.site/Git-Convention-064dee5df78e4b0c9dd59d18c775a460?pvs=4)
From c8d464fac58218bfb00f89b5b572a6b73e66d25a Mon Sep 17 00:00:00 2001 From: lsakee <93514333+lsakee@users.noreply.github.com> Date: Wed, 3 Jan 2024 19:27:23 +0900 Subject: [PATCH 011/115] [ui] : #6 popUpBtn Color / Font Set --- .../designsystem/components/button/LinkMindPopUpButton.kt | 7 ++++--- .../src/main/res/drawable/shape_neutrals_fill_8_rect.xml | 6 ++++++ .../src/main/res/drawable/shape_primary_fill_8_rect.xml | 6 ++++++ .../src/main/res/layout/button_pop_up_linkmind.xml | 1 + 4 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 feature/mainfeature/src/main/res/drawable/shape_neutrals_fill_8_rect.xml create mode 100644 feature/mainfeature/src/main/res/drawable/shape_primary_fill_8_rect.xml diff --git a/feature/mainfeature/src/main/java/designsystem/components/button/LinkMindPopUpButton.kt b/feature/mainfeature/src/main/java/designsystem/components/button/LinkMindPopUpButton.kt index efd7db1c..8e603ebf 100644 --- a/feature/mainfeature/src/main/java/designsystem/components/button/LinkMindPopUpButton.kt +++ b/feature/mainfeature/src/main/java/designsystem/components/button/LinkMindPopUpButton.kt @@ -38,7 +38,8 @@ class LinkMindPopUpButton @JvmOverloads constructor( binding.apply { clBtnHalfWidthLinkmind.isClickable = true clBtnHalfWidthLinkmind.isFocusable = true - tvBtn.setTextColor(ContextCompat.getColor(context, R.color.black)) + tvBtn.setTextColor(ContextCompat.getColor(context, R.color.white)) + clBtnHalfWidthLinkmind.setBackgroundResource(R.drawable.shape_primary_fill_8_rect) } } @@ -46,8 +47,8 @@ class LinkMindPopUpButton @JvmOverloads constructor( binding.apply { clBtnHalfWidthLinkmind.isClickable = false clBtnHalfWidthLinkmind.isFocusable = false - tvBtn.setTextColor(ContextCompat.getColor(context, R.color.black)) - clBtnHalfWidthLinkmind.setBackgroundColor(ContextCompat.getColor(context, R.color.black)) + tvBtn.setTextColor(ContextCompat.getColor(context, R.color.neutrals400)) + clBtnHalfWidthLinkmind.setBackgroundResource(R.drawable.shape_neutrals_fill_8_rect) } } diff --git a/feature/mainfeature/src/main/res/drawable/shape_neutrals_fill_8_rect.xml b/feature/mainfeature/src/main/res/drawable/shape_neutrals_fill_8_rect.xml new file mode 100644 index 00000000..4a905979 --- /dev/null +++ b/feature/mainfeature/src/main/res/drawable/shape_neutrals_fill_8_rect.xml @@ -0,0 +1,6 @@ + + + + + diff --git a/feature/mainfeature/src/main/res/drawable/shape_primary_fill_8_rect.xml b/feature/mainfeature/src/main/res/drawable/shape_primary_fill_8_rect.xml new file mode 100644 index 00000000..5a9aefbc --- /dev/null +++ b/feature/mainfeature/src/main/res/drawable/shape_primary_fill_8_rect.xml @@ -0,0 +1,6 @@ + + + + + diff --git a/feature/mainfeature/src/main/res/layout/button_pop_up_linkmind.xml b/feature/mainfeature/src/main/res/layout/button_pop_up_linkmind.xml index 13f0cde2..365a9f66 100644 --- a/feature/mainfeature/src/main/res/layout/button_pop_up_linkmind.xml +++ b/feature/mainfeature/src/main/res/layout/button_pop_up_linkmind.xml @@ -17,6 +17,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" + android:textAppearance="@style/Typography.suit.bold_16" app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" From fd9399d618a0e63e201c3d48be5157821089d87f Mon Sep 17 00:00:00 2001 From: lsakee <93514333+lsakee@users.noreply.github.com> Date: Wed, 3 Jan 2024 19:27:47 +0900 Subject: [PATCH 012/115] =?UTF-8?q?[feat]=20:=20#6=20dialog=20=EB=B2=84?= =?UTF-8?q?=ED=8A=BC=20=EC=83=81=ED=83=9C=20set?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/designsystem/components/dialog/LinkMindDialog.kt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/feature/mainfeature/src/main/java/designsystem/components/dialog/LinkMindDialog.kt b/feature/mainfeature/src/main/java/designsystem/components/dialog/LinkMindDialog.kt index bd46ba6a..b4ff85f1 100644 --- a/feature/mainfeature/src/main/java/designsystem/components/dialog/LinkMindDialog.kt +++ b/feature/mainfeature/src/main/java/designsystem/components/dialog/LinkMindDialog.kt @@ -10,6 +10,7 @@ import android.view.Window import android.view.WindowManager import androidx.annotation.StringRes import androidx.appcompat.app.AlertDialog +import designsystem.components.button.state.LinkMindButtonFullWidthState import org.sopt.mainfeature.databinding.DialogLinkmindBinding import org.sopt.ui.view.caculateMarignDialog @@ -68,6 +69,7 @@ class LinkMindDialog constructor(private val context: Context) { onClickListener: (view: View) -> (Unit), ): LinkMindDialog { binding.btnPositive.apply { + state = LinkMindButtonFullWidthState.ENABLE setText(context.getText(text).toString()) setOnClickListener(onClickListener) dismiss() @@ -80,6 +82,7 @@ class LinkMindDialog constructor(private val context: Context) { onClickListener: (view: View) -> (Unit) = {}, ): LinkMindDialog { binding.btnNegative.apply { + state = LinkMindButtonFullWidthState.DISABLE visibility = View.VISIBLE setText(context.getText(text).toString()) setOnClickListener(onClickListener) From c612f9dbd67ee0673c29678afd3dc279bf6a45d5 Mon Sep 17 00:00:00 2001 From: lsakee <93514333+lsakee@users.noreply.github.com> Date: Wed, 3 Jan 2024 19:38:57 +0900 Subject: [PATCH 013/115] =?UTF-8?q?[feat]=20:=20#6=20dialog=20ui=20?= =?UTF-8?q?=EB=B0=8F=20=EA=B8=B0=EB=8A=A5=20=EC=B5=9C=EC=A2=85=20=EC=99=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/dialog/LinkMindDialog.kt | 6 +++++ .../src/main/res/drawable/ic_close_20.xml | 20 +++++++++++++++++ .../drawable/shape_neutrals_fill_12_rect.xml | 6 +++++ .../src/main/res/layout/dialog_linkmind.xml | 22 +++++++++++++++---- 4 files changed, 50 insertions(+), 4 deletions(-) create mode 100644 feature/mainfeature/src/main/res/drawable/ic_close_20.xml create mode 100644 feature/mainfeature/src/main/res/drawable/shape_neutrals_fill_12_rect.xml diff --git a/feature/mainfeature/src/main/java/designsystem/components/dialog/LinkMindDialog.kt b/feature/mainfeature/src/main/java/designsystem/components/dialog/LinkMindDialog.kt index b4ff85f1..cfe41664 100644 --- a/feature/mainfeature/src/main/java/designsystem/components/dialog/LinkMindDialog.kt +++ b/feature/mainfeature/src/main/java/designsystem/components/dialog/LinkMindDialog.kt @@ -13,6 +13,7 @@ import androidx.appcompat.app.AlertDialog import designsystem.components.button.state.LinkMindButtonFullWidthState import org.sopt.mainfeature.databinding.DialogLinkmindBinding import org.sopt.ui.view.caculateMarignDialog +import org.sopt.ui.view.onThrottleClick class LinkMindDialog constructor(private val context: Context) { @@ -64,6 +65,11 @@ class LinkMindDialog constructor(private val context: Context) { return this } + fun setCloseBtn() = + binding.ivDialogCancel.onThrottleClick { + dismiss() + } + fun setPositiveButton( @StringRes text: Int, onClickListener: (view: View) -> (Unit), diff --git a/feature/mainfeature/src/main/res/drawable/ic_close_20.xml b/feature/mainfeature/src/main/res/drawable/ic_close_20.xml new file mode 100644 index 00000000..b4529451 --- /dev/null +++ b/feature/mainfeature/src/main/res/drawable/ic_close_20.xml @@ -0,0 +1,20 @@ + + + + diff --git a/feature/mainfeature/src/main/res/drawable/shape_neutrals_fill_12_rect.xml b/feature/mainfeature/src/main/res/drawable/shape_neutrals_fill_12_rect.xml new file mode 100644 index 00000000..7e887629 --- /dev/null +++ b/feature/mainfeature/src/main/res/drawable/shape_neutrals_fill_12_rect.xml @@ -0,0 +1,6 @@ + + + + + diff --git a/feature/mainfeature/src/main/res/layout/dialog_linkmind.xml b/feature/mainfeature/src/main/res/layout/dialog_linkmind.xml index fcccde9c..ff0883b9 100644 --- a/feature/mainfeature/src/main/res/layout/dialog_linkmind.xml +++ b/feature/mainfeature/src/main/res/layout/dialog_linkmind.xml @@ -3,26 +3,40 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" - android:layout_height="match_parent" - android:background="@color/black" - android:padding="24dp"> + android:layout_height="wrap_content" + android:background="@drawable/shape_neutrals_fill_12_rect" + android:paddingHorizontal="24dp" + android:paddingBottom="24dp" + android:paddingTop="20dp" + > + + Date: Wed, 3 Jan 2024 19:45:51 +0900 Subject: [PATCH 014/115] =?UTF-8?q?[ui]=20:=20#6=20color=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- feature/mainfeature/src/main/res/values/colors.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/feature/mainfeature/src/main/res/values/colors.xml b/feature/mainfeature/src/main/res/values/colors.xml index a47c4624..f1c21365 100644 --- a/feature/mainfeature/src/main/res/values/colors.xml +++ b/feature/mainfeature/src/main/res/values/colors.xml @@ -3,6 +3,7 @@ #FF000000 #FFFFFFFF + #FFFFFFFF #F2F2F2 #E5E5E5 #D9D9D9 @@ -15,6 +16,7 @@ #333333 #262626 #191919 + #FF000000 #FEEFEB From bcfc23e2c773e829ccce7bd20db1af83d94f7c3d Mon Sep 17 00:00:00 2001 From: lsakee <93514333+lsakee@users.noreply.github.com> Date: Wed, 3 Jan 2024 19:47:30 +0900 Subject: [PATCH 015/115] [rename] : #6 name change --- .../components/button/LinkMindFullWidthButton.kt | 8 ++++---- .../designsystem/components/button/LinkMindPopUpButton.kt | 8 ++++---- ...MindButtonFullWidthState.kt => LinkMindButtonState.kt} | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) rename feature/mainfeature/src/main/java/designsystem/components/button/state/{LinkMindButtonFullWidthState.kt => LinkMindButtonState.kt} (61%) diff --git a/feature/mainfeature/src/main/java/designsystem/components/button/LinkMindFullWidthButton.kt b/feature/mainfeature/src/main/java/designsystem/components/button/LinkMindFullWidthButton.kt index b27a2d3a..d1fcf068 100644 --- a/feature/mainfeature/src/main/java/designsystem/components/button/LinkMindFullWidthButton.kt +++ b/feature/mainfeature/src/main/java/designsystem/components/button/LinkMindFullWidthButton.kt @@ -6,7 +6,7 @@ import android.util.AttributeSet import android.view.LayoutInflater import android.widget.FrameLayout import androidx.core.content.ContextCompat -import designsystem.components.button.state.LinkMindButtonFullWidthState +import designsystem.components.button.state.LinkMindButtonState import org.sopt.mainfeature.R import org.sopt.mainfeature.databinding.ButtonFullWidthLinkmindBinding import org.sopt.ui.view.onThrottleClick @@ -20,15 +20,15 @@ class LinkMindFullWidthButton @JvmOverloads constructor( private val binding: ButtonFullWidthLinkmindBinding - var state: LinkMindButtonFullWidthState = LinkMindButtonFullWidthState.ENABLE + var state: LinkMindButtonState = LinkMindButtonState.ENABLE set(value) { field = value when (field) { - LinkMindButtonFullWidthState.ENABLE -> { + LinkMindButtonState.ENABLE -> { setBtnEnable(R.color.black) } - LinkMindButtonFullWidthState.DISABLE -> { + LinkMindButtonState.DISABLE -> { setBtnDisable(R.color.black) } } diff --git a/feature/mainfeature/src/main/java/designsystem/components/button/LinkMindPopUpButton.kt b/feature/mainfeature/src/main/java/designsystem/components/button/LinkMindPopUpButton.kt index 8e603ebf..a6226044 100644 --- a/feature/mainfeature/src/main/java/designsystem/components/button/LinkMindPopUpButton.kt +++ b/feature/mainfeature/src/main/java/designsystem/components/button/LinkMindPopUpButton.kt @@ -6,7 +6,7 @@ import android.util.AttributeSet import android.view.LayoutInflater import android.widget.FrameLayout import androidx.core.content.ContextCompat -import designsystem.components.button.state.LinkMindButtonFullWidthState +import designsystem.components.button.state.LinkMindButtonState import org.sopt.mainfeature.R import org.sopt.mainfeature.databinding.ButtonPopUpLinkmindBinding import org.sopt.ui.view.onThrottleClick @@ -20,15 +20,15 @@ class LinkMindPopUpButton @JvmOverloads constructor( private val binding: ButtonPopUpLinkmindBinding - var state: LinkMindButtonFullWidthState = LinkMindButtonFullWidthState.ENABLE + var state: LinkMindButtonState = LinkMindButtonState.ENABLE set(value) { field = value when (field) { - LinkMindButtonFullWidthState.ENABLE -> { + LinkMindButtonState.ENABLE -> { setBtnEnable() } - LinkMindButtonFullWidthState.DISABLE -> { + LinkMindButtonState.DISABLE -> { setBtnDisable() } } diff --git a/feature/mainfeature/src/main/java/designsystem/components/button/state/LinkMindButtonFullWidthState.kt b/feature/mainfeature/src/main/java/designsystem/components/button/state/LinkMindButtonState.kt similarity index 61% rename from feature/mainfeature/src/main/java/designsystem/components/button/state/LinkMindButtonFullWidthState.kt rename to feature/mainfeature/src/main/java/designsystem/components/button/state/LinkMindButtonState.kt index b092a11d..77aca73e 100644 --- a/feature/mainfeature/src/main/java/designsystem/components/button/state/LinkMindButtonFullWidthState.kt +++ b/feature/mainfeature/src/main/java/designsystem/components/button/state/LinkMindButtonState.kt @@ -1,5 +1,5 @@ package designsystem.components.button.state -enum class LinkMindButtonFullWidthState { +enum class LinkMindButtonState { ENABLE, DISABLE } From 52ac9e1f8baf63515a3490c18f3cb3a896947a73 Mon Sep 17 00:00:00 2001 From: lsakee <93514333+lsakee@users.noreply.github.com> Date: Wed, 3 Jan 2024 19:47:50 +0900 Subject: [PATCH 016/115] =?UTF-8?q?[feat]=20:=20#6=20=EB=B8=94=EB=A1=9D=20?= =?UTF-8?q?=EB=B2=84=ED=8A=BC=20=EC=99=84=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/button/LinkMindBlockButton.kt | 20 +++++++++---------- .../components/dialog/LinkMindDialog.kt | 6 +++--- .../shape_neutrals200_fill_12_rect.xml | 6 ++++++ .../shape_neutrals850_fill_12_rect.xml | 6 ++++++ .../main/res/layout/button_block_linkmind.xml | 2 ++ 5 files changed, 27 insertions(+), 13 deletions(-) create mode 100644 feature/mainfeature/src/main/res/drawable/shape_neutrals200_fill_12_rect.xml create mode 100644 feature/mainfeature/src/main/res/drawable/shape_neutrals850_fill_12_rect.xml diff --git a/feature/mainfeature/src/main/java/designsystem/components/button/LinkMindBlockButton.kt b/feature/mainfeature/src/main/java/designsystem/components/button/LinkMindBlockButton.kt index c353cb5c..6b5d59b3 100644 --- a/feature/mainfeature/src/main/java/designsystem/components/button/LinkMindBlockButton.kt +++ b/feature/mainfeature/src/main/java/designsystem/components/button/LinkMindBlockButton.kt @@ -6,7 +6,7 @@ import android.util.AttributeSet import android.view.LayoutInflater import android.widget.FrameLayout import androidx.core.content.ContextCompat -import designsystem.components.button.state.LinkMindButtonFullWidthState +import designsystem.components.button.state.LinkMindButtonState import org.sopt.mainfeature.R import org.sopt.mainfeature.databinding.ButtonBlockLinkmindBinding import org.sopt.ui.view.onThrottleClick @@ -20,33 +20,33 @@ class LinkMindBlockButton @JvmOverloads constructor( private val binding: ButtonBlockLinkmindBinding - var state: LinkMindButtonFullWidthState = LinkMindButtonFullWidthState.ENABLE + var state: LinkMindButtonState = LinkMindButtonState.ENABLE set(value) { field = value when (field) { - LinkMindButtonFullWidthState.ENABLE -> { - setBtnEnable(R.color.black) + LinkMindButtonState.ENABLE -> { + setBtnEnable(R.drawable.shape_neutrals200_fill_12_rect) } - LinkMindButtonFullWidthState.DISABLE -> { - setBtnDisable(R.color.black) + LinkMindButtonState.DISABLE -> { + setBtnDisable(R.drawable.shape_neutrals850_fill_12_rect) } } } - private fun setBtnEnable(textColorResId: Int) { + private fun setBtnEnable(drawableResId: Int) { binding.apply { clBtnMediumWidthLinkmind.isClickable = true clBtnMediumWidthLinkmind.isFocusable = true - tvBtn.setTextColor(ContextCompat.getColor(context, textColorResId)) + clBtnMediumWidthLinkmind.setBackgroundResource(drawableResId) } } - private fun setBtnDisable(textColorResId: Int) { + private fun setBtnDisable(drawableResId:Int) { binding.apply { clBtnMediumWidthLinkmind.isClickable = false clBtnMediumWidthLinkmind.isFocusable = false - clBtnMediumWidthLinkmind.setBackgroundColor(ContextCompat.getColor(context, textColorResId)) + clBtnMediumWidthLinkmind.setBackgroundResource(drawableResId) } } diff --git a/feature/mainfeature/src/main/java/designsystem/components/dialog/LinkMindDialog.kt b/feature/mainfeature/src/main/java/designsystem/components/dialog/LinkMindDialog.kt index cfe41664..838a76cf 100644 --- a/feature/mainfeature/src/main/java/designsystem/components/dialog/LinkMindDialog.kt +++ b/feature/mainfeature/src/main/java/designsystem/components/dialog/LinkMindDialog.kt @@ -10,7 +10,7 @@ import android.view.Window import android.view.WindowManager import androidx.annotation.StringRes import androidx.appcompat.app.AlertDialog -import designsystem.components.button.state.LinkMindButtonFullWidthState +import designsystem.components.button.state.LinkMindButtonState import org.sopt.mainfeature.databinding.DialogLinkmindBinding import org.sopt.ui.view.caculateMarignDialog import org.sopt.ui.view.onThrottleClick @@ -75,7 +75,7 @@ class LinkMindDialog constructor(private val context: Context) { onClickListener: (view: View) -> (Unit), ): LinkMindDialog { binding.btnPositive.apply { - state = LinkMindButtonFullWidthState.ENABLE + state = LinkMindButtonState.ENABLE setText(context.getText(text).toString()) setOnClickListener(onClickListener) dismiss() @@ -88,7 +88,7 @@ class LinkMindDialog constructor(private val context: Context) { onClickListener: (view: View) -> (Unit) = {}, ): LinkMindDialog { binding.btnNegative.apply { - state = LinkMindButtonFullWidthState.DISABLE + state = LinkMindButtonState.DISABLE visibility = View.VISIBLE setText(context.getText(text).toString()) setOnClickListener(onClickListener) diff --git a/feature/mainfeature/src/main/res/drawable/shape_neutrals200_fill_12_rect.xml b/feature/mainfeature/src/main/res/drawable/shape_neutrals200_fill_12_rect.xml new file mode 100644 index 00000000..86b62da6 --- /dev/null +++ b/feature/mainfeature/src/main/res/drawable/shape_neutrals200_fill_12_rect.xml @@ -0,0 +1,6 @@ + + + + + diff --git a/feature/mainfeature/src/main/res/drawable/shape_neutrals850_fill_12_rect.xml b/feature/mainfeature/src/main/res/drawable/shape_neutrals850_fill_12_rect.xml new file mode 100644 index 00000000..d2e03697 --- /dev/null +++ b/feature/mainfeature/src/main/res/drawable/shape_neutrals850_fill_12_rect.xml @@ -0,0 +1,6 @@ + + + + + diff --git a/feature/mainfeature/src/main/res/layout/button_block_linkmind.xml b/feature/mainfeature/src/main/res/layout/button_block_linkmind.xml index 208180c0..c31e6bef 100644 --- a/feature/mainfeature/src/main/res/layout/button_block_linkmind.xml +++ b/feature/mainfeature/src/main/res/layout/button_block_linkmind.xml @@ -17,6 +17,8 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" + android:textAppearance="@style/Typography.suit.bold_16" + android:textColor="@color/neutrals_white" app:layout_constraintTop_toTopOf="parent" tools:text="BTN" /> From 1c66d81a58c868bb286d0f7daf7e23e1208bda91 Mon Sep 17 00:00:00 2001 From: lsakee <93514333+lsakee@users.noreply.github.com> Date: Wed, 3 Jan 2024 19:53:54 +0900 Subject: [PATCH 017/115] =?UTF-8?q?[feat]=20:=20#6=20=EB=A9=94=EC=9D=B8=20?= =?UTF-8?q?=ED=92=80=20=EC=9C=84=EB=93=9C=20=EB=B2=84=ED=8A=BC=20=EC=99=84?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/button/LinkMindFullWidthButton.kt | 15 ++++++++++----- .../button/state/LinkMIndFullWidthButtonState.kt | 4 ++++ .../src/main/res/layout/button_block_linkmind.xml | 5 +++-- .../res/layout/button_full_width_linkmind.xml | 1 + 4 files changed, 18 insertions(+), 7 deletions(-) create mode 100644 feature/mainfeature/src/main/java/designsystem/components/button/state/LinkMIndFullWidthButtonState.kt diff --git a/feature/mainfeature/src/main/java/designsystem/components/button/LinkMindFullWidthButton.kt b/feature/mainfeature/src/main/java/designsystem/components/button/LinkMindFullWidthButton.kt index d1fcf068..9dccf561 100644 --- a/feature/mainfeature/src/main/java/designsystem/components/button/LinkMindFullWidthButton.kt +++ b/feature/mainfeature/src/main/java/designsystem/components/button/LinkMindFullWidthButton.kt @@ -6,6 +6,7 @@ import android.util.AttributeSet import android.view.LayoutInflater import android.widget.FrameLayout import androidx.core.content.ContextCompat +import designsystem.components.button.state.LinkMIndFullWidthButtonState import designsystem.components.button.state.LinkMindButtonState import org.sopt.mainfeature.R import org.sopt.mainfeature.databinding.ButtonFullWidthLinkmindBinding @@ -20,16 +21,20 @@ class LinkMindFullWidthButton @JvmOverloads constructor( private val binding: ButtonFullWidthLinkmindBinding - var state: LinkMindButtonState = LinkMindButtonState.ENABLE + var state: LinkMIndFullWidthButtonState = LinkMIndFullWidthButtonState.ENABLE_PRIMARY set(value) { field = value when (field) { - LinkMindButtonState.ENABLE -> { - setBtnEnable(R.color.black) + LinkMIndFullWidthButtonState.ENABLE_PRIMARY -> { + setBtnEnable(R.color.primary) } - LinkMindButtonState.DISABLE -> { - setBtnDisable(R.color.black) + LinkMIndFullWidthButtonState.ENABLE_BLACK -> { + setBtnEnable(R.color.neutrals_black) + } + + LinkMIndFullWidthButtonState.DISABLE -> { + setBtnDisable(R.color.neutrals100) } } } diff --git a/feature/mainfeature/src/main/java/designsystem/components/button/state/LinkMIndFullWidthButtonState.kt b/feature/mainfeature/src/main/java/designsystem/components/button/state/LinkMIndFullWidthButtonState.kt new file mode 100644 index 00000000..0436cf92 --- /dev/null +++ b/feature/mainfeature/src/main/java/designsystem/components/button/state/LinkMIndFullWidthButtonState.kt @@ -0,0 +1,4 @@ +package designsystem.components.button.state +enum class LinkMIndFullWidthButtonState { + ENABLE_PRIMARY,ENABLE_BLACK, DISABLE +} diff --git a/feature/mainfeature/src/main/res/layout/button_block_linkmind.xml b/feature/mainfeature/src/main/res/layout/button_block_linkmind.xml index c31e6bef..38a99c32 100644 --- a/feature/mainfeature/src/main/res/layout/button_block_linkmind.xml +++ b/feature/mainfeature/src/main/res/layout/button_block_linkmind.xml @@ -9,8 +9,9 @@ android:id="@+id/cl_btn_medium_width_linkmind" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:paddingHorizontal="109dp" - android:paddingVertical="14dp"> + android:paddingHorizontal="146dp" + android:background="@drawable/shape_neutrals200_fill_12_rect" + android:paddingVertical="21dp"> From 35751384019ca454a6a3fbaf4db2aa6bc0db46da Mon Sep 17 00:00:00 2001 From: lsakee <93514333+lsakee@users.noreply.github.com> Date: Wed, 3 Jan 2024 19:58:48 +0900 Subject: [PATCH 018/115] =?UTF-8?q?[feat]=20:=20#6=20=ED=94=84=EB=A1=9C?= =?UTF-8?q?=EA=B7=B8=EB=9E=98=EC=8A=A4=EB=B0=94=20=EC=99=84=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/res/drawable/progress_bar_horizontal.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/feature/mainfeature/src/main/res/drawable/progress_bar_horizontal.xml b/feature/mainfeature/src/main/res/drawable/progress_bar_horizontal.xml index e57518fb..89974156 100644 --- a/feature/mainfeature/src/main/res/drawable/progress_bar_horizontal.xml +++ b/feature/mainfeature/src/main/res/drawable/progress_bar_horizontal.xml @@ -3,7 +3,7 @@ - + @@ -11,8 +11,8 @@ - + - \ No newline at end of file + From 0f1cad33355c9125e5379a798d2330b3a2b12439 Mon Sep 17 00:00:00 2001 From: lsakee <93514333+lsakee@users.noreply.github.com> Date: Wed, 3 Jan 2024 20:40:47 +0900 Subject: [PATCH 019/115] =?UTF-8?q?[feat]=20:=20#6=20block=20=EB=B2=84?= =?UTF-8?q?=ED=8A=BC=20=EC=B5=9C=EC=A2=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../designsystem/components/button/LinkMindBlockButton.kt | 2 ++ .../src/main/res/layout/button_block_linkmind.xml | 8 +++----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/feature/mainfeature/src/main/java/designsystem/components/button/LinkMindBlockButton.kt b/feature/mainfeature/src/main/java/designsystem/components/button/LinkMindBlockButton.kt index 6b5d59b3..f97d88d8 100644 --- a/feature/mainfeature/src/main/java/designsystem/components/button/LinkMindBlockButton.kt +++ b/feature/mainfeature/src/main/java/designsystem/components/button/LinkMindBlockButton.kt @@ -38,6 +38,7 @@ class LinkMindBlockButton @JvmOverloads constructor( binding.apply { clBtnMediumWidthLinkmind.isClickable = true clBtnMediumWidthLinkmind.isFocusable = true + tvBtn.setTextColor(ContextCompat.getColor(context, R.color.white)) clBtnMediumWidthLinkmind.setBackgroundResource(drawableResId) } } @@ -46,6 +47,7 @@ class LinkMindBlockButton @JvmOverloads constructor( binding.apply { clBtnMediumWidthLinkmind.isClickable = false clBtnMediumWidthLinkmind.isFocusable = false + tvBtn.setTextColor(ContextCompat.getColor(context, R.color.white)) clBtnMediumWidthLinkmind.setBackgroundResource(drawableResId) } } diff --git a/feature/mainfeature/src/main/res/layout/button_block_linkmind.xml b/feature/mainfeature/src/main/res/layout/button_block_linkmind.xml index 38a99c32..c4d032e7 100644 --- a/feature/mainfeature/src/main/res/layout/button_block_linkmind.xml +++ b/feature/mainfeature/src/main/res/layout/button_block_linkmind.xml @@ -2,15 +2,14 @@ From ab9b2da4c8c1c487a4d85ddc84f7a6cc8e295ca9 Mon Sep 17 00:00:00 2001 From: lsakee <93514333+lsakee@users.noreply.github.com> Date: Wed, 3 Jan 2024 20:41:04 +0900 Subject: [PATCH 020/115] [feat] : #6 full width btn complete --- .../components/button/LinkMindFullWidthButton.kt | 5 ++++- .../src/main/res/drawable/shape_neutrals200_fill_12_rect.xml | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/feature/mainfeature/src/main/java/designsystem/components/button/LinkMindFullWidthButton.kt b/feature/mainfeature/src/main/java/designsystem/components/button/LinkMindFullWidthButton.kt index 9dccf561..70c89d0c 100644 --- a/feature/mainfeature/src/main/java/designsystem/components/button/LinkMindFullWidthButton.kt +++ b/feature/mainfeature/src/main/java/designsystem/components/button/LinkMindFullWidthButton.kt @@ -42,7 +42,9 @@ class LinkMindFullWidthButton @JvmOverloads constructor( binding.apply { clBtnFullWidthLinkmind.isClickable = false clBtnFullWidthLinkmind.isFocusable = false - tvBtn.setTextColor(ContextCompat.getColor(context, textColorResId)) + tvBtn.setTextColor(ContextCompat.getColor(context, R.color.neutrals_white)) + clBtnFullWidthLinkmind.setBackgroundColor(ContextCompat.getColor(context, textColorResId)) + } } @@ -50,6 +52,7 @@ class LinkMindFullWidthButton @JvmOverloads constructor( binding.apply { clBtnFullWidthLinkmind.isClickable = true clBtnFullWidthLinkmind.isFocusable = true + tvBtn.setTextColor(ContextCompat.getColor(context, R.color.neutrals_white)) clBtnFullWidthLinkmind.setBackgroundColor(ContextCompat.getColor(context, textColorResId)) } } diff --git a/feature/mainfeature/src/main/res/drawable/shape_neutrals200_fill_12_rect.xml b/feature/mainfeature/src/main/res/drawable/shape_neutrals200_fill_12_rect.xml index 86b62da6..ddf1993b 100644 --- a/feature/mainfeature/src/main/res/drawable/shape_neutrals200_fill_12_rect.xml +++ b/feature/mainfeature/src/main/res/drawable/shape_neutrals200_fill_12_rect.xml @@ -1,6 +1,6 @@ - + From 63077fcc707421978d1bea46cd8d1fcf2b7e20cb Mon Sep 17 00:00:00 2001 From: lsakee <93514333+lsakee@users.noreply.github.com> Date: Wed, 3 Jan 2024 20:57:08 +0900 Subject: [PATCH 021/115] =?UTF-8?q?[feat]=20:=20#6=20edit=20text=20?= =?UTF-8?q?=EC=99=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/edittext/LinkMindEditTextBox.kt | 2 +- .../src/main/res/layout/edit_text_box_linkmind.xml | 7 ++++--- .../src/main/res/layout/edit_text_search_box_linkmind.xml | 3 ++- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/feature/mainfeature/src/main/java/designsystem/components/edittext/LinkMindEditTextBox.kt b/feature/mainfeature/src/main/java/designsystem/components/edittext/LinkMindEditTextBox.kt index c3113720..daaf6f2c 100644 --- a/feature/mainfeature/src/main/java/designsystem/components/edittext/LinkMindEditTextBox.kt +++ b/feature/mainfeature/src/main/java/designsystem/components/edittext/LinkMindEditTextBox.kt @@ -40,7 +40,7 @@ class LinkMindEditTextBox @JvmOverloads constructor( binding.editText.doAfterTextChanged { text -> binding.ivCancel.visibility = - if (text.isNullOrEmpty()) View.GONE else View.VISIBLE + if (text.isNullOrEmpty()) View.INVISIBLE else View.VISIBLE } val typedArray = diff --git a/feature/mainfeature/src/main/res/layout/edit_text_box_linkmind.xml b/feature/mainfeature/src/main/res/layout/edit_text_box_linkmind.xml index 658db083..e5e9052e 100644 --- a/feature/mainfeature/src/main/res/layout/edit_text_box_linkmind.xml +++ b/feature/mainfeature/src/main/res/layout/edit_text_box_linkmind.xml @@ -2,7 +2,8 @@ + android:layout_height="wrap_content" + android:background="@drawable/shape_neutrals_fill_12_rect"> @@ -25,7 +26,7 @@ android:layout_height="wrap_content" android:padding="8dp" android:src="@drawable/ic_cancle_24" - android:visibility="gone" + android:visibility="invisible" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" /> diff --git a/feature/mainfeature/src/main/res/layout/edit_text_search_box_linkmind.xml b/feature/mainfeature/src/main/res/layout/edit_text_search_box_linkmind.xml index 79379035..dc339556 100644 --- a/feature/mainfeature/src/main/res/layout/edit_text_search_box_linkmind.xml +++ b/feature/mainfeature/src/main/res/layout/edit_text_search_box_linkmind.xml @@ -3,6 +3,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" + android:background="@drawable/shape_neutrals_fill_12_rect" android:layout_height="wrap_content"> From c44f6ef043eba01b46d35ca731573db7ade1979a Mon Sep 17 00:00:00 2001 From: lsakee <93514333+lsakee@users.noreply.github.com> Date: Wed, 3 Jan 2024 21:05:55 +0900 Subject: [PATCH 022/115] =?UTF-8?q?[chore]=20:=20#6=20=EB=B6=88=ED=95=84?= =?UTF-8?q?=EC=9A=94=20=EC=BD=94=EB=93=9C=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mainfeature/src/main/AndroidManifest.xml | 60 +++++++++---------- 1 file changed, 29 insertions(+), 31 deletions(-) diff --git a/feature/mainfeature/src/main/AndroidManifest.xml b/feature/mainfeature/src/main/AndroidManifest.xml index 241ed066..bc919b8e 100644 --- a/feature/mainfeature/src/main/AndroidManifest.xml +++ b/feature/mainfeature/src/main/AndroidManifest.xml @@ -1,38 +1,36 @@ + xmlns:tools="http://schemas.android.com/tools"> - + - - - - + + + + - - - - - - - - + + + + + + From 098bbbd1b5c251413f96b59a06cc971e94a24772 Mon Sep 17 00:00:00 2001 From: lsakee <93514333+lsakee@users.noreply.github.com> Date: Wed, 3 Jan 2024 21:06:14 +0900 Subject: [PATCH 023/115] [chore] : #6 ktlint / detekt / format --- .../components/button/LinkMindBlockButton.kt | 2 +- .../button/LinkMindFullWidthButton.kt | 2 - .../state/LinkMIndFullWidthButtonState.kt | 2 +- .../sopt/mainfeature/ExamDesignActivity.kt | 65 ++++++++++++++++ .../mainfeature/onboarding/LoginActivity.kt | 19 +---- .../res/layout/activity_design_components.xml | 74 +++++++++++++++++++ .../res/layout/button_pop_up_linkmind.xml | 10 +-- .../src/main/res/layout/dialog_linkmind.xml | 3 +- .../layout/edit_text_search_box_linkmind.xml | 4 +- 9 files changed, 151 insertions(+), 30 deletions(-) create mode 100644 feature/mainfeature/src/main/java/org/sopt/mainfeature/ExamDesignActivity.kt create mode 100644 feature/mainfeature/src/main/res/layout/activity_design_components.xml diff --git a/feature/mainfeature/src/main/java/designsystem/components/button/LinkMindBlockButton.kt b/feature/mainfeature/src/main/java/designsystem/components/button/LinkMindBlockButton.kt index f97d88d8..fbffe2b8 100644 --- a/feature/mainfeature/src/main/java/designsystem/components/button/LinkMindBlockButton.kt +++ b/feature/mainfeature/src/main/java/designsystem/components/button/LinkMindBlockButton.kt @@ -43,7 +43,7 @@ class LinkMindBlockButton @JvmOverloads constructor( } } - private fun setBtnDisable(drawableResId:Int) { + private fun setBtnDisable(drawableResId: Int) { binding.apply { clBtnMediumWidthLinkmind.isClickable = false clBtnMediumWidthLinkmind.isFocusable = false diff --git a/feature/mainfeature/src/main/java/designsystem/components/button/LinkMindFullWidthButton.kt b/feature/mainfeature/src/main/java/designsystem/components/button/LinkMindFullWidthButton.kt index 70c89d0c..af0e3fb0 100644 --- a/feature/mainfeature/src/main/java/designsystem/components/button/LinkMindFullWidthButton.kt +++ b/feature/mainfeature/src/main/java/designsystem/components/button/LinkMindFullWidthButton.kt @@ -7,7 +7,6 @@ import android.view.LayoutInflater import android.widget.FrameLayout import androidx.core.content.ContextCompat import designsystem.components.button.state.LinkMIndFullWidthButtonState -import designsystem.components.button.state.LinkMindButtonState import org.sopt.mainfeature.R import org.sopt.mainfeature.databinding.ButtonFullWidthLinkmindBinding import org.sopt.ui.view.onThrottleClick @@ -44,7 +43,6 @@ class LinkMindFullWidthButton @JvmOverloads constructor( clBtnFullWidthLinkmind.isFocusable = false tvBtn.setTextColor(ContextCompat.getColor(context, R.color.neutrals_white)) clBtnFullWidthLinkmind.setBackgroundColor(ContextCompat.getColor(context, textColorResId)) - } } diff --git a/feature/mainfeature/src/main/java/designsystem/components/button/state/LinkMIndFullWidthButtonState.kt b/feature/mainfeature/src/main/java/designsystem/components/button/state/LinkMIndFullWidthButtonState.kt index 0436cf92..6f128712 100644 --- a/feature/mainfeature/src/main/java/designsystem/components/button/state/LinkMIndFullWidthButtonState.kt +++ b/feature/mainfeature/src/main/java/designsystem/components/button/state/LinkMIndFullWidthButtonState.kt @@ -1,4 +1,4 @@ package designsystem.components.button.state enum class LinkMIndFullWidthButtonState { - ENABLE_PRIMARY,ENABLE_BLACK, DISABLE + ENABLE_PRIMARY, ENABLE_BLACK, DISABLE } diff --git a/feature/mainfeature/src/main/java/org/sopt/mainfeature/ExamDesignActivity.kt b/feature/mainfeature/src/main/java/org/sopt/mainfeature/ExamDesignActivity.kt new file mode 100644 index 00000000..58c5dc86 --- /dev/null +++ b/feature/mainfeature/src/main/java/org/sopt/mainfeature/ExamDesignActivity.kt @@ -0,0 +1,65 @@ +package org.sopt.mainfeature + +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity +import dagger.hilt.android.AndroidEntryPoint +import designsystem.components.button.state.LinkMIndFullWidthButtonState +import designsystem.components.button.state.LinkMindButtonState +import designsystem.components.dialog.LinkMindDialog +import org.sopt.mainfeature.databinding.ActivityDesignComponentsBinding +import timber.log.Timber + +@AndroidEntryPoint +class ExamDesignActivity : AppCompatActivity() { + private lateinit var binding: ActivityDesignComponentsBinding + + private val linkMindDialog by lazy { + LinkMindDialog(this) + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = ActivityDesignComponentsBinding.inflate(layoutInflater) + + binding.progress.apply { + setProgressBarMain(63) + } + binding.btnBlock.apply { + state = LinkMindButtonState.ENABLE + btnClick { + } + } + binding.etv.apply { + throttleAfterTextChanged { + Timber.d("SaK") + } + } + + binding.btnBlock2.apply { + state = LinkMindButtonState.DISABLE + } + binding.btnFull.apply { + state = LinkMIndFullWidthButtonState.ENABLE_PRIMARY + } + binding.btnFull1.apply { + state = LinkMIndFullWidthButtonState.ENABLE_BLACK + } + binding.btnFull2.apply { + state = LinkMIndFullWidthButtonState.DISABLE + } + setContentView(binding.root) + showRevokeCommonDialog() + } + + private fun showRevokeCommonDialog() { + linkMindDialog.setTitle(R.string.text_home) + .setSubtitle(R.string.text_clip) + .setNegativeButton(R.string.text_home) { + linkMindDialog.dismiss() + } + .setPositiveButton(R.string.text_home) { + linkMindDialog.dismiss() + } + .show() + } +} diff --git a/feature/mainfeature/src/main/java/org/sopt/mainfeature/onboarding/LoginActivity.kt b/feature/mainfeature/src/main/java/org/sopt/mainfeature/onboarding/LoginActivity.kt index f23b5174..9079a4a5 100644 --- a/feature/mainfeature/src/main/java/org/sopt/mainfeature/onboarding/LoginActivity.kt +++ b/feature/mainfeature/src/main/java/org/sopt/mainfeature/onboarding/LoginActivity.kt @@ -8,14 +8,12 @@ import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.flowWithLifecycle import androidx.lifecycle.lifecycleScope import dagger.hilt.android.AndroidEntryPoint -import designsystem.components.dialog.LinkMindDialog import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch import org.sopt.datastore.datastore.SecurityDataStore import org.sopt.mainfeature.MainActivity -import org.sopt.mainfeature.R import org.sopt.mainfeature.databinding.ActivityLoginBinding import org.sopt.oauthdomain.interactor.OAuthInteractor import org.sopt.ui.context.toast @@ -33,9 +31,6 @@ class LoginActivity : AppCompatActivity() { @Inject lateinit var dataStore: SecurityDataStore - private val linkMindDialog by lazy { - LinkMindDialog(this) - } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityLoginBinding.inflate(layoutInflater) @@ -43,19 +38,8 @@ class LoginActivity : AppCompatActivity() { initCheckAutoLogin() initKakaoLoginBtnClickListener() initAuthStateObserver() - showRevokeCommonDialog() - } - private fun showRevokeCommonDialog() { - linkMindDialog.setTitle(R.string.text_home) - .setSubtitle(R.string.text_clip) - .setNegativeButton(R.string.text_home) { - linkMindDialog.dismiss() - } - .setPositiveButton(R.string.text_home) { - linkMindDialog.dismiss() - } - .show() } + private fun initCheckAutoLogin() { lifecycleScope.launch { if (dataStore.flowAutoLogin().first()) { @@ -89,6 +73,7 @@ class LoginActivity : AppCompatActivity() { is UiState.Failure -> { this@LoginActivity.toast(state.msg) } + is UiState.Loading -> {} else -> {} } diff --git a/feature/mainfeature/src/main/res/layout/activity_design_components.xml b/feature/mainfeature/src/main/res/layout/activity_design_components.xml new file mode 100644 index 00000000..edf77706 --- /dev/null +++ b/feature/mainfeature/src/main/res/layout/activity_design_components.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + diff --git a/feature/mainfeature/src/main/res/layout/button_pop_up_linkmind.xml b/feature/mainfeature/src/main/res/layout/button_pop_up_linkmind.xml index 365a9f66..43fb1597 100644 --- a/feature/mainfeature/src/main/res/layout/button_pop_up_linkmind.xml +++ b/feature/mainfeature/src/main/res/layout/button_pop_up_linkmind.xml @@ -9,8 +9,8 @@ android:id="@+id/cl_btn_half_width_linkmind" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:paddingVertical="14dp" - android:paddingHorizontal="44dp"> + android:paddingHorizontal="44dp" + android:paddingVertical="14dp"> diff --git a/feature/mainfeature/src/main/res/layout/dialog_linkmind.xml b/feature/mainfeature/src/main/res/layout/dialog_linkmind.xml index ff0883b9..369ecf41 100644 --- a/feature/mainfeature/src/main/res/layout/dialog_linkmind.xml +++ b/feature/mainfeature/src/main/res/layout/dialog_linkmind.xml @@ -6,9 +6,8 @@ android:layout_height="wrap_content" android:background="@drawable/shape_neutrals_fill_12_rect" android:paddingHorizontal="24dp" - android:paddingBottom="24dp" android:paddingTop="20dp" - > + android:paddingBottom="24dp"> + android:layout_height="wrap_content" + android:background="@drawable/shape_neutrals_fill_12_rect"> Date: Wed, 3 Jan 2024 21:34:17 +0900 Subject: [PATCH 024/115] =?UTF-8?q?[chore]=20:=20#6=20color=20=EC=9E=90?= =?UTF-8?q?=EB=A6=AC=20=EA=B5=90=EC=B2=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../designsystem/components/button/LinkMindBlockButton.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/feature/mainfeature/src/main/java/designsystem/components/button/LinkMindBlockButton.kt b/feature/mainfeature/src/main/java/designsystem/components/button/LinkMindBlockButton.kt index fbffe2b8..a3321f6a 100644 --- a/feature/mainfeature/src/main/java/designsystem/components/button/LinkMindBlockButton.kt +++ b/feature/mainfeature/src/main/java/designsystem/components/button/LinkMindBlockButton.kt @@ -25,11 +25,11 @@ class LinkMindBlockButton @JvmOverloads constructor( field = value when (field) { LinkMindButtonState.ENABLE -> { - setBtnEnable(R.drawable.shape_neutrals200_fill_12_rect) + setBtnEnable(R.drawable.shape_neutrals850_fill_12_rect) } LinkMindButtonState.DISABLE -> { - setBtnDisable(R.drawable.shape_neutrals850_fill_12_rect) + setBtnDisable(R.drawable.shape_neutrals200_fill_12_rect) } } } From f0b44d90f3d7842ddf5fecc1fdcd3fba206d3308 Mon Sep 17 00:00:00 2001 From: CHANGEL <107169027+CHANGEL1004@users.noreply.github.com> Date: Fri, 5 Jan 2024 00:40:38 +0900 Subject: [PATCH 025/115] Update README.md --- README.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/README.md b/README.md index fd379025..1aab6cc5 100644 --- a/README.md +++ b/README.md @@ -28,3 +28,21 @@ ## 🎁 Git Convention [NOTION Git Convention](https://hill-agenda-2b0.notion.site/Git-Convention-064dee5df78e4b0c9dd59d18c775a460?pvs=4)
+ +## 💻 Kanban Board +[GIT Kanban Board](https://github.com/orgs/Link-MIND/projects/1/views/1) +
+ +### 📂 Foldering Convention +```bash +├── LinkMind-Android +│ ├── app +│ ├── build-logic +│ ├── core +│ ├── data +│ │── data-local +│ ├── domain +│ ├── feature +``` + + From 8bd2d5c2bd2964fba15e59ea9d2638556b884b94 Mon Sep 17 00:00:00 2001 From: CHANGEL <107169027+CHANGEL1004@users.noreply.github.com> Date: Fri, 5 Jan 2024 00:49:35 +0900 Subject: [PATCH 026/115] Update README.md --- README.md | 36 +++++++++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 1aab6cc5..b45fa8f1 100644 --- a/README.md +++ b/README.md @@ -36,13 +36,35 @@ ### 📂 Foldering Convention ```bash ├── LinkMind-Android -│ ├── app -│ ├── build-logic -│ ├── core -│ ├── data -│ │── data-local -│ ├── domain -│ ├── feature +├── 📁 app +│ ├── build +│ ├── src +├── 📁 build-logic +│ │ ├── .gradle +│ │ ├── build +├── 📁 Convention +│ ├── build +│ ├── src +├── 📁 core +│ ├── 🗂️ auth +│ ├── 🗂️ authimpl +│ ├── 🗂️ common +│ ├── 🗂️ datastore +│ ├── 🗂️ model +│ ├── 🗂️ network +│ ├── 🗂️ ui +├── 📁 data +│ ├── 🗂️ linkminddata +│ ├── 🗂️ oauthdata +├── 📁 data-local +│ ├── 🗂️ linkminddata-local +├── 📁 data- remote +│ ├── 🗂️ linkminddata-remote +├── 📁 domain +│ ├── 🗂️ linkminddomain +│ ├── 🗂️ oauthdomain +├── 📁 feature +│ ├── 🗂️ mainfeature ``` From 2c336004788e67436945a56cf0f316521731807b Mon Sep 17 00:00:00 2001 From: Choi Min Young Date: Fri, 5 Jan 2024 02:16:07 +0900 Subject: [PATCH 027/115] =?UTF-8?q?[feat]=20#27=20Splash=20=EC=8A=A4?= =?UTF-8?q?=ED=83=80=EC=9D=BC=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- feature/mainfeature/src/main/res/values/themes.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/feature/mainfeature/src/main/res/values/themes.xml b/feature/mainfeature/src/main/res/values/themes.xml index 21917539..9e46b575 100644 --- a/feature/mainfeature/src/main/res/values/themes.xml +++ b/feature/mainfeature/src/main/res/values/themes.xml @@ -11,4 +11,7 @@ From 163997b5adcb80f076f42738b700877d84f5ca4f Mon Sep 17 00:00:00 2001 From: Choi Min Young Date: Fri, 5 Jan 2024 02:16:35 +0900 Subject: [PATCH 028/115] =?UTF-8?q?[feat]=20#27=20LoginActivity=EC=99=80?= =?UTF-8?q?=20Splash=20=EC=97=B0=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mainfeature/src/main/AndroidManifest.xml | 18 +++++++++++------- .../org/sopt/mainfeature/SplashActivity.kt | 16 ++++++++++++++++ 2 files changed, 27 insertions(+), 7 deletions(-) create mode 100644 feature/mainfeature/src/main/java/org/sopt/mainfeature/SplashActivity.kt diff --git a/feature/mainfeature/src/main/AndroidManifest.xml b/feature/mainfeature/src/main/AndroidManifest.xml index bc919b8e..55c534aa 100644 --- a/feature/mainfeature/src/main/AndroidManifest.xml +++ b/feature/mainfeature/src/main/AndroidManifest.xml @@ -17,13 +17,7 @@ tools:targetApi="31"> - - - - - - + android:exported="true"> @@ -31,6 +25,16 @@ android:name=".MainActivity" android:exported="true" android:screenOrientation="portrait" /> + + + + + + + diff --git a/feature/mainfeature/src/main/java/org/sopt/mainfeature/SplashActivity.kt b/feature/mainfeature/src/main/java/org/sopt/mainfeature/SplashActivity.kt new file mode 100644 index 00000000..3044276a --- /dev/null +++ b/feature/mainfeature/src/main/java/org/sopt/mainfeature/SplashActivity.kt @@ -0,0 +1,16 @@ +package org.sopt.mainfeature + +import android.app.Activity +import android.content.Intent +import android.os.Bundle +import org.sopt.mainfeature.onboarding.LoginActivity + + +class SplashActivity : Activity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + val intent = Intent(this, LoginActivity::class.java) + startActivity(intent) + finish() + } +} From 2134c14a21fc41ff427edee71a64cb6f078d1891 Mon Sep 17 00:00:00 2001 From: Choi Min Young Date: Fri, 5 Jan 2024 02:19:42 +0900 Subject: [PATCH 029/115] [feat] #27 lint --- .../src/main/java/org/sopt/mainfeature/SplashActivity.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/feature/mainfeature/src/main/java/org/sopt/mainfeature/SplashActivity.kt b/feature/mainfeature/src/main/java/org/sopt/mainfeature/SplashActivity.kt index 3044276a..d3c400cc 100644 --- a/feature/mainfeature/src/main/java/org/sopt/mainfeature/SplashActivity.kt +++ b/feature/mainfeature/src/main/java/org/sopt/mainfeature/SplashActivity.kt @@ -5,7 +5,6 @@ import android.content.Intent import android.os.Bundle import org.sopt.mainfeature.onboarding.LoginActivity - class SplashActivity : Activity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) From f2c8d08545c68de9e00b8af21d9becd4eada8c84 Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Wed, 3 Jan 2024 20:20:05 +0900 Subject: [PATCH 030/115] =?UTF-8?q?[feat]=20#18=20=ED=83=80=EC=9D=B4?= =?UTF-8?q?=ED=8B=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/res/layout/fragment_timer.xml | 34 +++++++++++++------ 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/feature/mainfeature/src/main/res/layout/fragment_timer.xml b/feature/mainfeature/src/main/res/layout/fragment_timer.xml index 503353e9..7588e725 100644 --- a/feature/mainfeature/src/main/res/layout/fragment_timer.xml +++ b/feature/mainfeature/src/main/res/layout/fragment_timer.xml @@ -1,13 +1,27 @@ - + + + android:layout_height="56dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> - - - + android:id="@+id/tv_timer_title" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginStart="20dp" + android:layout_marginTop="16dp" + android:text="TIMER" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + From 9c58a66b117a321b97b83edd9a4d034efb43be01 Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Wed, 3 Jan 2024 20:20:49 +0900 Subject: [PATCH 031/115] =?UTF-8?q?[add]=20#18=20=ED=83=80=EC=9D=B4?= =?UTF-8?q?=ED=8B=80=20=EC=8A=A4=ED=8A=B8=EB=A7=81=20=EB=A6=AC=EC=86=8C?= =?UTF-8?q?=EC=8A=A4=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- feature/mainfeature/src/main/res/layout/fragment_timer.xml | 2 +- feature/mainfeature/src/main/res/values/strings.xml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/feature/mainfeature/src/main/res/layout/fragment_timer.xml b/feature/mainfeature/src/main/res/layout/fragment_timer.xml index 7588e725..1d07d2c4 100644 --- a/feature/mainfeature/src/main/res/layout/fragment_timer.xml +++ b/feature/mainfeature/src/main/res/layout/fragment_timer.xml @@ -19,7 +19,7 @@ android:layout_height="wrap_content" android:layout_marginStart="20dp" android:layout_marginTop="16dp" - android:text="TIMER" + android:text="@string/timer_title" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> diff --git a/feature/mainfeature/src/main/res/values/strings.xml b/feature/mainfeature/src/main/res/values/strings.xml index 96006228..56fa035b 100644 --- a/feature/mainfeature/src/main/res/values/strings.xml +++ b/feature/mainfeature/src/main/res/values/strings.xml @@ -5,4 +5,5 @@ TIMER MY placeholder + TIMER From 2ec76c90a2f9a68a83216b53cedbed33944f80cc Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Wed, 3 Jan 2024 20:28:40 +0900 Subject: [PATCH 032/115] =?UTF-8?q?[add]=20#18=20=EC=95=84=EC=9D=B4?= =?UTF-8?q?=EC=BD=98=20=EB=A6=AC=EC=86=8C=EC=8A=A4=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/res/drawable/ic_plus_24.xml | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 feature/mainfeature/src/main/res/drawable/ic_plus_24.xml diff --git a/feature/mainfeature/src/main/res/drawable/ic_plus_24.xml b/feature/mainfeature/src/main/res/drawable/ic_plus_24.xml new file mode 100644 index 00000000..1aed0500 --- /dev/null +++ b/feature/mainfeature/src/main/res/drawable/ic_plus_24.xml @@ -0,0 +1,13 @@ + + + From 46f2e76d4120bec2d00a6f94e2845758e161abc9 Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Wed, 3 Jan 2024 20:29:01 +0900 Subject: [PATCH 033/115] =?UTF-8?q?[feat]=20#18=20=ED=94=8C=EB=9F=AC?= =?UTF-8?q?=EC=8A=A4=20=EB=B2=84=ED=8A=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/res/layout/fragment_timer.xml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/feature/mainfeature/src/main/res/layout/fragment_timer.xml b/feature/mainfeature/src/main/res/layout/fragment_timer.xml index 1d07d2c4..a5d405bb 100644 --- a/feature/mainfeature/src/main/res/layout/fragment_timer.xml +++ b/feature/mainfeature/src/main/res/layout/fragment_timer.xml @@ -19,9 +19,21 @@ android:layout_height="wrap_content" android:layout_marginStart="20dp" android:layout_marginTop="16dp" + android:layout_marginBottom="18dp" android:text="@string/timer_title" + android:textAppearance="@style/Typography.suit.bold_18" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> + + From 1bd1c6e0536e42984a6d878d43e18e76e6bb2d4b Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Wed, 3 Jan 2024 20:47:47 +0900 Subject: [PATCH 034/115] =?UTF-8?q?[add]=20#18=20=EC=95=84=EC=9D=B4?= =?UTF-8?q?=EC=BD=98=20=EB=A6=AC=EC=86=8C=EC=8A=A4=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/res/drawable/ic_alarm_disabled_20.xml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 feature/mainfeature/src/main/res/drawable/ic_alarm_disabled_20.xml diff --git a/feature/mainfeature/src/main/res/drawable/ic_alarm_disabled_20.xml b/feature/mainfeature/src/main/res/drawable/ic_alarm_disabled_20.xml new file mode 100644 index 00000000..58e15972 --- /dev/null +++ b/feature/mainfeature/src/main/res/drawable/ic_alarm_disabled_20.xml @@ -0,0 +1,9 @@ + + + From 3bcb835e8b549d6b1f97ced50264f9cec945e61a Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Wed, 3 Jan 2024 20:48:06 +0900 Subject: [PATCH 035/115] =?UTF-8?q?[add]=20#18=20shape=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/res/drawable/shape_gray_fill_12_rect.xml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 feature/mainfeature/src/main/res/drawable/shape_gray_fill_12_rect.xml diff --git a/feature/mainfeature/src/main/res/drawable/shape_gray_fill_12_rect.xml b/feature/mainfeature/src/main/res/drawable/shape_gray_fill_12_rect.xml new file mode 100644 index 00000000..afc68716 --- /dev/null +++ b/feature/mainfeature/src/main/res/drawable/shape_gray_fill_12_rect.xml @@ -0,0 +1,7 @@ + + + + + From 014a43369eb7109aa832bf1630fbf6fdacfc6efb Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Wed, 3 Jan 2024 20:48:28 +0900 Subject: [PATCH 036/115] =?UTF-8?q?[ui]=20#18=20=ED=83=80=EC=9D=B4?= =?UTF-8?q?=EB=A8=B8=20=EB=B7=B0=20=EC=95=8C=EB=A6=BC=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/res/layout/fragment_timer.xml | 76 ++++++++++++++++++- 1 file changed, 74 insertions(+), 2 deletions(-) diff --git a/feature/mainfeature/src/main/res/layout/fragment_timer.xml b/feature/mainfeature/src/main/res/layout/fragment_timer.xml index a5d405bb..c1c11768 100644 --- a/feature/mainfeature/src/main/res/layout/fragment_timer.xml +++ b/feature/mainfeature/src/main/res/layout/fragment_timer.xml @@ -31,9 +31,81 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="20dp" - app:layout_constraintTop_toTopOf="parent" + android:src="@drawable/ic_plus_24" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" - android:src="@drawable/ic_plus_24" + app:layout_constraintTop_toTopOf="parent" /> + + + + + + + + + + + + + + + + + + + + From 71bd86a1bacfe72fc9fa9d9e5a72017044bcc0fa Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Wed, 3 Jan 2024 22:20:26 +0900 Subject: [PATCH 037/115] =?UTF-8?q?[add]=20#18=20=EC=95=84=EC=9D=B4?= =?UTF-8?q?=EC=BD=98=20=EB=A6=AC=EC=86=8C=EC=8A=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mainfeature/src/main/res/drawable/ic_ellipse_18.xml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 feature/mainfeature/src/main/res/drawable/ic_ellipse_18.xml diff --git a/feature/mainfeature/src/main/res/drawable/ic_ellipse_18.xml b/feature/mainfeature/src/main/res/drawable/ic_ellipse_18.xml new file mode 100644 index 00000000..b00cd2d5 --- /dev/null +++ b/feature/mainfeature/src/main/res/drawable/ic_ellipse_18.xml @@ -0,0 +1,9 @@ + + + From c95c8c1ba3992cb8b9c0c9e57cf3f293ad2e97e9 Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Wed, 3 Jan 2024 22:21:18 +0900 Subject: [PATCH 038/115] =?UTF-8?q?[add]=20#18=20=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=EB=A7=81=20=EB=A6=AC=EC=86=8C=EC=8A=A4=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- feature/mainfeature/src/main/res/values/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/feature/mainfeature/src/main/res/values/strings.xml b/feature/mainfeature/src/main/res/values/strings.xml index 56fa035b..6096a3ac 100644 --- a/feature/mainfeature/src/main/res/values/strings.xml +++ b/feature/mainfeature/src/main/res/values/strings.xml @@ -6,4 +6,10 @@ MY placeholder TIMER + 알림 설정이 꺼져 있어요 + 타이머 기능을 이용하시려면 + 기기 설정 > 알림 + 에서 알림을 켜주세요. + 타이머를 설정하고\n원하는 때에 링크를 받아보세요 + 타이머 설정하기 From d1e59b09e08a1de4e1ca17437920489c82c8a939 Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Wed, 3 Jan 2024 22:21:35 +0900 Subject: [PATCH 039/115] =?UTF-8?q?[ui]=20#18=20=ED=83=80=EC=9D=B4?= =?UTF-8?q?=EB=A8=B8=20=EC=97=86=EC=9D=84=20=EB=95=8C=20=EB=B7=B0=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/res/layout/fragment_timer.xml | 258 ++++++++++++++---- 1 file changed, 203 insertions(+), 55 deletions(-) diff --git a/feature/mainfeature/src/main/res/layout/fragment_timer.xml b/feature/mainfeature/src/main/res/layout/fragment_timer.xml index c1c11768..080772b4 100644 --- a/feature/mainfeature/src/main/res/layout/fragment_timer.xml +++ b/feature/mainfeature/src/main/res/layout/fragment_timer.xml @@ -3,6 +3,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" + android:background="@color/background" tools:context=".timer.TimerFragment"> - - + app:layout_constraintTop_toBottomOf="@id/cl_timer_title"> - + android:background="@drawable/shape_gray_fill_12_rect" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintBottom_toBottomOf="parent"> - - + - - - + + + + + + + + + + + + + + + + + + - + + + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent"> + + + + - + + + + - + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent"> + + + + + + + + + + + + + + + + + + + + - From b6cd82f2e1b48df7a84db86e026af84c499974ea Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Wed, 3 Jan 2024 22:21:57 +0900 Subject: [PATCH 040/115] =?UTF-8?q?[ui]=20#18=20=ED=83=80=EC=9D=B4?= =?UTF-8?q?=EB=A8=B8=20=ED=94=84=EB=9E=98=EA=B7=B8=EB=A8=BC=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sopt/mainfeature/timer/TimerFragment.kt | 56 +++++-------------- 1 file changed, 15 insertions(+), 41 deletions(-) diff --git a/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/TimerFragment.kt b/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/TimerFragment.kt index d2adf09e..0c985e50 100644 --- a/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/TimerFragment.kt +++ b/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/TimerFragment.kt @@ -4,58 +4,32 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.core.view.isGone +import androidx.core.view.isVisible import androidx.fragment.app.Fragment import org.sopt.mainfeature.R +import org.sopt.mainfeature.databinding.FragmentTimerBinding -// TODO: Rename parameter arguments, choose names that match -// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER -private const val ARG_PARAM1 = "param1" -private const val ARG_PARAM2 = "param2" - -/** - * A simple [Fragment] subclass. - * Use the [TimerFragment.newInstance] factory method to - * create an instance of this fragment. - */ class TimerFragment : Fragment() { - // TODO: Rename and change types of parameters - private var param1: String? = null - private var param2: String? = null - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - arguments?.let { - param1 = it.getString(ARG_PARAM1) - param2 = it.getString(ARG_PARAM2) - } - } - + lateinit var binding : FragmentTimerBinding override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?, ): View? { - // Inflate the layout for this fragment - return inflater.inflate(R.layout.fragment_timer, container, false) + binding = FragmentTimerBinding.inflate(layoutInflater) + return binding.root } - companion object { - /** - * Use this factory method to create a new instance of - * this fragment using the provided parameters. - * - * @param param1 Parameter 1. - * @param param2 Parameter 2. - * @return A new instance of fragment TimerFragment. - */ - // TODO: Rename and change types and number of parameters - @JvmStatic - fun newInstance(param1: String, param2: String) = - TimerFragment().apply { - arguments = Bundle().apply { - putString(ARG_PARAM1, param1) - putString(ARG_PARAM2, param2) - } + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + binding.clTimerPermission.setOnClickListener { + if(binding.clTimerPermissionOff.isVisible){ + binding.clTimerPermissionOff.isGone = true + }else{ + binding.clTimerPermissionOff.isGone = false } + } } } From 907e8122506d5abe250d3019c472359d44434dc2 Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Wed, 3 Jan 2024 22:24:11 +0900 Subject: [PATCH 041/115] =?UTF-8?q?[ui]=20#18=20=EA=B5=AC=EB=B6=84?= =?UTF-8?q?=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- feature/mainfeature/src/main/res/layout/fragment_timer.xml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/feature/mainfeature/src/main/res/layout/fragment_timer.xml b/feature/mainfeature/src/main/res/layout/fragment_timer.xml index 080772b4..ecda785b 100644 --- a/feature/mainfeature/src/main/res/layout/fragment_timer.xml +++ b/feature/mainfeature/src/main/res/layout/fragment_timer.xml @@ -248,6 +248,13 @@ app:layout_constraintTop_toBottomOf="@id/ll_timer_complete" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" /> + + From a09764f5e0930de5f05b2a55b190feb0e7e7e4fd Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Thu, 4 Jan 2024 00:56:18 +0900 Subject: [PATCH 042/115] =?UTF-8?q?[add]=20#18=20=EC=95=84=EC=9D=B4?= =?UTF-8?q?=EC=BD=98=20=EB=A6=AC=EC=86=8C=EC=8A=A4=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mainfeature/src/main/res/drawable/ic_alarm_24.xml | 9 +++++++++ .../src/main/res/drawable/shape_primary_fill_4_rect.xml | 7 +++++++ 2 files changed, 16 insertions(+) create mode 100644 feature/mainfeature/src/main/res/drawable/ic_alarm_24.xml create mode 100644 feature/mainfeature/src/main/res/drawable/shape_primary_fill_4_rect.xml diff --git a/feature/mainfeature/src/main/res/drawable/ic_alarm_24.xml b/feature/mainfeature/src/main/res/drawable/ic_alarm_24.xml new file mode 100644 index 00000000..3754e762 --- /dev/null +++ b/feature/mainfeature/src/main/res/drawable/ic_alarm_24.xml @@ -0,0 +1,9 @@ + + + diff --git a/feature/mainfeature/src/main/res/drawable/shape_primary_fill_4_rect.xml b/feature/mainfeature/src/main/res/drawable/shape_primary_fill_4_rect.xml new file mode 100644 index 00000000..e02acda3 --- /dev/null +++ b/feature/mainfeature/src/main/res/drawable/shape_primary_fill_4_rect.xml @@ -0,0 +1,7 @@ + + + + + From a94d2dac9a69592e9f347e9398ab05d7d05fba66 Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Thu, 4 Jan 2024 00:56:33 +0900 Subject: [PATCH 043/115] =?UTF-8?q?[ui]=20#18=20=ED=83=80=EC=9D=B4?= =?UTF-8?q?=EB=A8=B8=20=EB=B7=B0=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/res/layout/fragment_timer.xml | 137 +++++++++--------- .../main/res/layout/item_timer_complete.xml | 91 ++++++++++++ 2 files changed, 158 insertions(+), 70 deletions(-) create mode 100644 feature/mainfeature/src/main/res/layout/item_timer_complete.xml diff --git a/feature/mainfeature/src/main/res/layout/fragment_timer.xml b/feature/mainfeature/src/main/res/layout/fragment_timer.xml index ecda785b..004a42d0 100644 --- a/feature/mainfeature/src/main/res/layout/fragment_timer.xml +++ b/feature/mainfeature/src/main/res/layout/fragment_timer.xml @@ -59,10 +59,10 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/shape_gray_fill_12_rect" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintStart_toStartOf="parent" + app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintBottom_toBottomOf="parent"> + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> @@ -144,9 +144,9 @@ android:id="@+id/cl_timer_none" android:layout_width="match_parent" android:layout_height="wrap_content" - app:layout_constraintTop_toTopOf="parent" + app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toEndOf="parent"> + app:layout_constraintTop_toTopOf="parent"> + app:layout_constraintTop_toBottomOf="@id/tv_timer_none" /> - - + app:layout_constraintTop_toTopOf="parent"> + + - + android:text="완료된 타이머" + android:textAppearance="@style/Typography.suit.bold_18" + android:textColor="@color/neutrals900" /> - + - - - - - - - - - - - + android:textAppearance="@style/Typography.suit.bold_12" + android:textColor="@color/neutrals300" + tools:text="0" /> +
+ + + + + + diff --git a/feature/mainfeature/src/main/res/layout/item_timer_complete.xml b/feature/mainfeature/src/main/res/layout/item_timer_complete.xml new file mode 100644 index 00000000..641da453 --- /dev/null +++ b/feature/mainfeature/src/main/res/layout/item_timer_complete.xml @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + From e90685c714a0645cbf9da8b9782e6b7366859b20 Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Thu, 4 Jan 2024 03:10:18 +0900 Subject: [PATCH 044/115] =?UTF-8?q?[ui]=20#18=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/res/layout/fragment_timer.xml | 127 +++++++++--------- 1 file changed, 64 insertions(+), 63 deletions(-) diff --git a/feature/mainfeature/src/main/res/layout/fragment_timer.xml b/feature/mainfeature/src/main/res/layout/fragment_timer.xml index 004a42d0..eef0cf0e 100644 --- a/feature/mainfeature/src/main/res/layout/fragment_timer.xml +++ b/feature/mainfeature/src/main/res/layout/fragment_timer.xml @@ -42,6 +42,7 @@ android:layout_width="match_parent" android:layout_height="0dp" android:orientation="vertical" + android:visibility="gone" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintTop_toBottomOf="@id/cl_timer_title"> @@ -188,76 +189,76 @@ - - - - - - - - + - + + - - + + - + - + + + + + + + From 0c8ee9168af1c60ac6d63bbf1f7b299145c8cb91 Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Thu, 4 Jan 2024 05:05:29 +0900 Subject: [PATCH 045/115] =?UTF-8?q?[add]=20#18=20=EC=95=84=EC=9D=B4?= =?UTF-8?q?=EC=BD=98=20=EB=A6=AC=EC=86=8C=EC=8A=A4=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/res/drawable/ic_more_24.xml | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 feature/mainfeature/src/main/res/drawable/ic_more_24.xml diff --git a/feature/mainfeature/src/main/res/drawable/ic_more_24.xml b/feature/mainfeature/src/main/res/drawable/ic_more_24.xml new file mode 100644 index 00000000..24045e52 --- /dev/null +++ b/feature/mainfeature/src/main/res/drawable/ic_more_24.xml @@ -0,0 +1,27 @@ + + + + + From dd6cb60205fcf40f1a80248ac62c97a2f02f74dc Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Thu, 4 Jan 2024 05:06:32 +0900 Subject: [PATCH 046/115] =?UTF-8?q?[del]=20#18=20=EB=B6=88=ED=95=84?= =?UTF-8?q?=EC=9A=94=ED=95=9C=20id?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- feature/mainfeature/src/main/res/layout/item_timer_complete.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/feature/mainfeature/src/main/res/layout/item_timer_complete.xml b/feature/mainfeature/src/main/res/layout/item_timer_complete.xml index 641da453..91592125 100644 --- a/feature/mainfeature/src/main/res/layout/item_timer_complete.xml +++ b/feature/mainfeature/src/main/res/layout/item_timer_complete.xml @@ -61,7 +61,6 @@ app:layout_constraintTop_toBottomOf="@id/ll_item_timer_complete_date"> Date: Thu, 4 Jan 2024 05:06:59 +0900 Subject: [PATCH 047/115] [ui] #18 item timer --- .../src/main/res/layout/item_timer_wait.xml | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 feature/mainfeature/src/main/res/layout/item_timer_wait.xml diff --git a/feature/mainfeature/src/main/res/layout/item_timer_wait.xml b/feature/mainfeature/src/main/res/layout/item_timer_wait.xml new file mode 100644 index 00000000..4b04acb3 --- /dev/null +++ b/feature/mainfeature/src/main/res/layout/item_timer_wait.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + From 66029517e3a66add40a080ca0fcdad2715dc9255 Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Thu, 4 Jan 2024 05:07:09 +0900 Subject: [PATCH 048/115] [ui] #18 fragment timer --- .../src/main/res/layout/fragment_timer.xml | 161 ++++++++++++------ 1 file changed, 110 insertions(+), 51 deletions(-) diff --git a/feature/mainfeature/src/main/res/layout/fragment_timer.xml b/feature/mainfeature/src/main/res/layout/fragment_timer.xml index eef0cf0e..2b9a0a3b 100644 --- a/feature/mainfeature/src/main/res/layout/fragment_timer.xml +++ b/feature/mainfeature/src/main/res/layout/fragment_timer.xml @@ -190,75 +190,134 @@ - - - - - - + - + android:layout_marginStart="20dp" + android:layout_marginTop="20dp" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + + + android:layout_marginStart="4dp" + android:background="@drawable/ic_ellipse_18" + android:backgroundTint="@color/neutrals100"> + + + + + + + + + - - + - - + + + + + From 2c440795681f158b02adfd2cc6506dbb2b0dd7a7 Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Thu, 4 Jan 2024 05:08:54 +0900 Subject: [PATCH 049/115] =?UTF-8?q?[add]=20#18=20string=20=EB=A6=AC?= =?UTF-8?q?=EC=86=8C=EC=8A=A4=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/res/layout/item_timer_complete.xml | 6 ++--- .../src/main/res/layout/item_timer_wait.xml | 26 +++++++++---------- .../src/main/res/values/strings.xml | 3 +++ 3 files changed, 19 insertions(+), 16 deletions(-) diff --git a/feature/mainfeature/src/main/res/layout/item_timer_complete.xml b/feature/mainfeature/src/main/res/layout/item_timer_complete.xml index 91592125..914c92b0 100644 --- a/feature/mainfeature/src/main/res/layout/item_timer_complete.xml +++ b/feature/mainfeature/src/main/res/layout/item_timer_complete.xml @@ -46,7 +46,7 @@ android:background="@drawable/shape_primary_fill_4_rect" android:paddingHorizontal="12dp" android:paddingVertical="4dp" - android:text="읽으러가기" + android:text="@string/timer_read" android:textAppearance="@style/Typography.suit.semibold_14" android:textColor="@color/primary" app:layout_constraintEnd_toEndOf="parent" @@ -70,7 +70,7 @@ @@ -80,7 +80,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="14dp" - android:text="읽기 딱 좋은 시간이에요!" + android:text="@string/timer_good" android:textAppearance="@style/Typography.suit.regular_16" android:textColor="@color/neutrals600" app:layout_constraintBottom_toBottomOf="parent" diff --git a/feature/mainfeature/src/main/res/layout/item_timer_wait.xml b/feature/mainfeature/src/main/res/layout/item_timer_wait.xml index 4b04acb3..d95425d1 100644 --- a/feature/mainfeature/src/main/res/layout/item_timer_wait.xml +++ b/feature/mainfeature/src/main/res/layout/item_timer_wait.xml @@ -6,8 +6,8 @@ android:layout_height="wrap_content" android:layout_marginBottom="18dp" android:elevation="0dp" - app:strokeWidth="0dp" - app:cardCornerRadius="10dp"> + app:cardCornerRadius="10dp" + app:strokeWidth="0dp"> @@ -30,19 +30,19 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="14dp" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintEnd_toEndOf="parent" /> + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + tools:text="매주 월, 금 오전 10시마다" /> + app:layout_constraintTop_toBottomOf="@id/tv_item_timer_wait_when" /> + app:layout_constraintTop_toBottomOf="@id/v_item_timer_wait_1" /> diff --git a/feature/mainfeature/src/main/res/values/strings.xml b/feature/mainfeature/src/main/res/values/strings.xml index 6096a3ac..e7a6cb2a 100644 --- a/feature/mainfeature/src/main/res/values/strings.xml +++ b/feature/mainfeature/src/main/res/values/strings.xml @@ -12,4 +12,7 @@ 에서 알림을 켜주세요. 타이머를 설정하고\n원하는 때에 링크를 받아보세요 타이머 설정하기 + 읽으러가기 + 링크들을 + 읽기 딱 좋은 시간이에요! From 86c1fe63f4be3b7feb9f2e176874819667b00e73 Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Thu, 4 Jan 2024 05:10:05 +0900 Subject: [PATCH 050/115] =?UTF-8?q?[add]=20#18=20string=20=EB=A6=AC?= =?UTF-8?q?=EC=86=8C=EC=8A=A4=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- feature/mainfeature/src/main/res/layout/fragment_timer.xml | 6 +++--- feature/mainfeature/src/main/res/values/strings.xml | 3 +++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/feature/mainfeature/src/main/res/layout/fragment_timer.xml b/feature/mainfeature/src/main/res/layout/fragment_timer.xml index 2b9a0a3b..281de1b4 100644 --- a/feature/mainfeature/src/main/res/layout/fragment_timer.xml +++ b/feature/mainfeature/src/main/res/layout/fragment_timer.xml @@ -219,7 +219,7 @@ android:id="@+id/tv_timer_complete" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="완료된 타이머" + android:text="@string/timer_complete" android:textAppearance="@style/Typography.suit.bold_18" android:textColor="@color/neutrals900" /> @@ -268,7 +268,7 @@ android:id="@+id/tv_timer_not_complete" android:layout_width="match_parent" android:layout_height="wrap_content" - android:text="타이머가 완료되면 리마인드 드릴게요" + android:text="@string/timer_not_complete" android:layout_marginTop="18dp" android:layout_marginHorizontal="20dp" android:layout_marginBottom="18dp" @@ -297,7 +297,7 @@ android:layout_height="wrap_content" android:layout_marginStart="20dp" android:layout_marginTop="24dp" - android:text="타이머 대기 중.." + android:text="@string/timer_wait" android:textAppearance="@style/Typography.suit.bold_18" android:textColor="@color/neutrals900" app:layout_constraintStart_toStartOf="parent" diff --git a/feature/mainfeature/src/main/res/values/strings.xml b/feature/mainfeature/src/main/res/values/strings.xml index e7a6cb2a..f7f32c4a 100644 --- a/feature/mainfeature/src/main/res/values/strings.xml +++ b/feature/mainfeature/src/main/res/values/strings.xml @@ -15,4 +15,7 @@ 읽으러가기 링크들을 읽기 딱 좋은 시간이에요! + 타이머 대기 중.. + 타이머가 완료되면 리마인드 드릴게요 + 완료된 타이머 From fe4dc73baaf6f458b4b1ad8c998ded3ffd449b45 Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Thu, 4 Jan 2024 06:49:53 +0900 Subject: [PATCH 051/115] =?UTF-8?q?[chore]=20#18=20=ED=83=80=EC=9D=B4?= =?UTF-8?q?=EB=A8=B8=20=EB=B7=B0=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- feature/mainfeature/src/main/res/layout/fragment_timer.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/feature/mainfeature/src/main/res/layout/fragment_timer.xml b/feature/mainfeature/src/main/res/layout/fragment_timer.xml index 281de1b4..f095c123 100644 --- a/feature/mainfeature/src/main/res/layout/fragment_timer.xml +++ b/feature/mainfeature/src/main/res/layout/fragment_timer.xml @@ -39,6 +39,7 @@ @@ -224,6 +227,7 @@ android:textColor="@color/neutrals900" /> Date: Thu, 4 Jan 2024 06:50:12 +0900 Subject: [PATCH 052/115] [feat] #18 complete timer adapter --- .../mainfeature/timer/CompleteTimerAdapter.kt | 30 +++++++++++++++++++ .../timer/CompleteTimerViewHolder.kt | 21 +++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/CompleteTimerAdapter.kt create mode 100644 feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/CompleteTimerViewHolder.kt diff --git a/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/CompleteTimerAdapter.kt b/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/CompleteTimerAdapter.kt new file mode 100644 index 00000000..bfe68d6e --- /dev/null +++ b/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/CompleteTimerAdapter.kt @@ -0,0 +1,30 @@ +package org.sopt.mainfeature.timer + +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.ListAdapter +import org.sopt.mainfeature.databinding.ItemTimerCompleteBinding +import org.sopt.mainfeature.timer.dummymodel.Timer +import org.sopt.ui.view.ItemDiffCallback + +class CompleteTimerAdapter( + private val onClicked: (Timer) -> Unit, +) : ListAdapter(DiffUtil) { + override fun onBindViewHolder(holder: CompleteTimerViewHolder, position: Int) { + holder.onBind(getItem(position)) + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CompleteTimerViewHolder { + return CompleteTimerViewHolder( + ItemTimerCompleteBinding.inflate(LayoutInflater.from(parent.context), parent, false), + onClicked + ) + } + + companion object { + private val DiffUtil = ItemDiffCallback( + onItemsTheSame = { old, new -> old.id == new.id }, + onContentsTheSame = { old, new -> old == new } + ) + } +} diff --git a/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/CompleteTimerViewHolder.kt b/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/CompleteTimerViewHolder.kt new file mode 100644 index 00000000..629f2222 --- /dev/null +++ b/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/CompleteTimerViewHolder.kt @@ -0,0 +1,21 @@ +package org.sopt.mainfeature.timer + +import androidx.recyclerview.widget.RecyclerView +import org.sopt.mainfeature.databinding.ItemTimerCompleteBinding +import org.sopt.mainfeature.timer.dummymodel.Timer + +class CompleteTimerViewHolder( + private val binding: ItemTimerCompleteBinding, + private val onClicked: (Timer) -> Unit, +) : RecyclerView.ViewHolder(binding.root) { + fun onBind(data: Timer?) { + if (data == null) return + val ampm = if(data.am)" 오전 " else " 오후 " + val minute = if(data.minute < 10)"0${data.minute}" else data.minute.toString() + binding.tvItemTimerCompleteCategory.text = data.category + binding.tvItemTimerCompleteTime.text = data.day + ampm + data.hour.toString() + ":" + minute + binding.tvItemTimerCompleteRead.setOnClickListener { + onClicked(data) + } + } +} From cb15957b6b632fa543895db5c8e38fcbc4c6c728 Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Thu, 4 Jan 2024 06:50:26 +0900 Subject: [PATCH 053/115] [feat] #18 wait timer adapter --- .../mainfeature/timer/WaitTimerAdapter.kt | 32 +++++++++++++++++++ .../mainfeature/timer/WaitTimerViewHolder.kt | 27 ++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/WaitTimerAdapter.kt create mode 100644 feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/WaitTimerViewHolder.kt diff --git a/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/WaitTimerAdapter.kt b/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/WaitTimerAdapter.kt new file mode 100644 index 00000000..acd797e8 --- /dev/null +++ b/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/WaitTimerAdapter.kt @@ -0,0 +1,32 @@ +package org.sopt.mainfeature.timer + +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.ListAdapter +import org.sopt.mainfeature.databinding.ItemTimerWaitBinding +import org.sopt.mainfeature.timer.dummymodel.Timer +import org.sopt.ui.view.ItemDiffCallback + +class WaitTimerAdapter( + private val onToggleClicked: (Timer) -> Unit, + private val onMoreClicked: (Timer) -> Unit, +) : ListAdapter(DiffUtil) { + override fun onBindViewHolder(holder: WaitTimerViewHolder, position: Int) { + holder.onBind(getItem(position)) + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): WaitTimerViewHolder { + return WaitTimerViewHolder( + ItemTimerWaitBinding.inflate(LayoutInflater.from(parent.context), parent, false), + onToggleClicked, + onMoreClicked, + ) + } + + companion object { + private val DiffUtil = ItemDiffCallback( + onItemsTheSame = { old, new -> old.id == new.id }, + onContentsTheSame = { old, new -> old == new }, + ) + } +} diff --git a/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/WaitTimerViewHolder.kt b/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/WaitTimerViewHolder.kt new file mode 100644 index 00000000..19b01429 --- /dev/null +++ b/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/WaitTimerViewHolder.kt @@ -0,0 +1,27 @@ +package org.sopt.mainfeature.timer + +import androidx.recyclerview.widget.RecyclerView +import org.sopt.mainfeature.databinding.ItemTimerCompleteBinding +import org.sopt.mainfeature.databinding.ItemTimerWaitBinding +import org.sopt.mainfeature.timer.dummymodel.Timer + +class WaitTimerViewHolder( + private val binding: ItemTimerWaitBinding, + private val onToggleClicked: (Timer) -> Unit, + private val onMoreClicked: (Timer) -> Unit, +) : RecyclerView.ViewHolder(binding.root) { + fun onBind(data: Timer?) { + if (data == null) return + + binding.tvItemTimerWaitCategory.text = data.category + val minute = if(data.minute == 0) "" else " ${data.minute}분" + binding.tvItemTimerWaitWhen.text = "매주 " + data.day + " 오전 " + data.hour.toString() +"시" + minute + "마다" + + binding.root.setOnClickListener { + onToggleClicked(data) + } + binding.root.setOnClickListener { + onMoreClicked(data) + } + } +} From 076cc79a5eff5690a6499ece996fbb2629addb8c Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Thu, 4 Jan 2024 06:50:37 +0900 Subject: [PATCH 054/115] [feat] #18 dummy model --- .../org/sopt/mainfeature/timer/dummymodel/Timer.kt | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/dummymodel/Timer.kt diff --git a/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/dummymodel/Timer.kt b/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/dummymodel/Timer.kt new file mode 100644 index 00000000..1b222f73 --- /dev/null +++ b/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/dummymodel/Timer.kt @@ -0,0 +1,10 @@ +package org.sopt.mainfeature.timer.dummymodel + +data class Timer( + val id: Int, + val category: String, + val day: String, + val am: Boolean, + val hour: Int, + val minute: Int, +) From 2da904d548900ccc8cfc9f1d0a7e03a97d50b87a Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Thu, 4 Jan 2024 06:53:31 +0900 Subject: [PATCH 055/115] [chore] #18 complete timer item --- feature/mainfeature/src/main/res/layout/item_timer_complete.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/feature/mainfeature/src/main/res/layout/item_timer_complete.xml b/feature/mainfeature/src/main/res/layout/item_timer_complete.xml index 914c92b0..22e899f3 100644 --- a/feature/mainfeature/src/main/res/layout/item_timer_complete.xml +++ b/feature/mainfeature/src/main/res/layout/item_timer_complete.xml @@ -29,6 +29,7 @@ android:src="@drawable/ic_alarm_24" /> Date: Thu, 4 Jan 2024 06:53:50 +0900 Subject: [PATCH 056/115] =?UTF-8?q?[feat]=20#18=20=ED=83=80=EC=9D=B4?= =?UTF-8?q?=EB=A8=B8=20=ED=94=84=EB=9E=98=EA=B7=B8=EB=A8=BC=ED=8A=B8=20dum?= =?UTF-8?q?my=20=EB=A1=9C=EC=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sopt/mainfeature/timer/TimerFragment.kt | 53 ++++++++++++++++--- 1 file changed, 46 insertions(+), 7 deletions(-) diff --git a/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/TimerFragment.kt b/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/TimerFragment.kt index 0c985e50..9558f243 100644 --- a/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/TimerFragment.kt +++ b/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/TimerFragment.kt @@ -1,5 +1,6 @@ package org.sopt.mainfeature.timer +import android.content.res.ColorStateList import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -9,27 +10,65 @@ import androidx.core.view.isVisible import androidx.fragment.app.Fragment import org.sopt.mainfeature.R import org.sopt.mainfeature.databinding.FragmentTimerBinding +import org.sopt.mainfeature.timer.dummymodel.Timer +import org.sopt.ui.fragment.colorOf class TimerFragment : Fragment() { - lateinit var binding : FragmentTimerBinding + private var _binding: FragmentTimerBinding? = null + protected val binding + get() = requireNotNull(_binding) { + } + private lateinit var completeTimerAdapter: CompleteTimerAdapter + private lateinit var waitTimerAdapter: WaitTimerAdapter + var timerExist = true override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?, ): View? { - binding = FragmentTimerBinding.inflate(layoutInflater) + _binding = FragmentTimerBinding.inflate(layoutInflater) return binding.root } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - binding.clTimerPermission.setOnClickListener { - if(binding.clTimerPermissionOff.isVisible){ - binding.clTimerPermissionOff.isGone = true - }else{ - binding.clTimerPermissionOff.isGone = false + binding.tvTimerTitle.setOnClickListener { + if(timerExist){ + binding.svTimerExist.isVisible = true + binding.llTimerNotExist.isGone = true + timerExist = false + } else { + binding.svTimerExist.isGone = true + binding.llTimerNotExist.isVisible = true + timerExist = true } } + + completeTimerAdapter = CompleteTimerAdapter({}) + waitTimerAdapter = WaitTimerAdapter({}, {}) + + val list = listOf( + Timer(1, "네이버", "일요일", true, 8, 37), + Timer(1, "네이버", "일요일", true, 8, 37) + ) + + completeTimerAdapter.submitList(list) + waitTimerAdapter.submitList(list) + binding.tvTimerCompleteCount.text = list.count().toString() + if(list.count() != 0){ + val color = colorOf(R.color.primary) + val textColor = colorOf(R.color.white) + val colorStateList = ColorStateList.valueOf(color) + binding.flTimerCompleteCount.backgroundTintList = colorStateList + binding.tvTimerCompleteCount.setTextColor(textColor) + } + binding.rvTimerComplete.adapter = completeTimerAdapter + binding.rvTimerWait.adapter = waitTimerAdapter + } + + override fun onDestroyView() { + _binding = null + super.onDestroyView() } } From 0d6b0b17cad33c5f19a892873391aead00510d95 Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Thu, 4 Jan 2024 07:20:08 +0900 Subject: [PATCH 057/115] =?UTF-8?q?[chore]=20#18=20=EB=A8=B8=ED=84=B0?= =?UTF-8?q?=EB=A6=AC=EC=96=BC=20=EC=B9=B4=EB=93=9C=EB=B7=B0=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=EC=B9=B4=EB=93=9C=EB=B7=B0=20=EC=9C=84=EC=A0=AF?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/res/layout/item_timer_complete.xml | 11 ++++++----- .../src/main/res/layout/item_timer_wait.xml | 7 ++++--- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/feature/mainfeature/src/main/res/layout/item_timer_complete.xml b/feature/mainfeature/src/main/res/layout/item_timer_complete.xml index 22e899f3..220769d7 100644 --- a/feature/mainfeature/src/main/res/layout/item_timer_complete.xml +++ b/feature/mainfeature/src/main/res/layout/item_timer_complete.xml @@ -1,13 +1,14 @@ - + app:cardElevation="0dp" + android:foreground="@android:color/transparent" + app:cardCornerRadius="10dp" + app:strokeWidth="0dp"> - + diff --git a/feature/mainfeature/src/main/res/layout/item_timer_wait.xml b/feature/mainfeature/src/main/res/layout/item_timer_wait.xml index d95425d1..b94d56d7 100644 --- a/feature/mainfeature/src/main/res/layout/item_timer_wait.xml +++ b/feature/mainfeature/src/main/res/layout/item_timer_wait.xml @@ -1,11 +1,12 @@ - @@ -62,4 +63,4 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@id/v_item_timer_wait_1" /> - + From 329cc8392e9f0fd057df3e34370e87e1b0a3761e Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Thu, 4 Jan 2024 07:20:31 +0900 Subject: [PATCH 058/115] [ui] #18 dummy logic --- .../main/java/org/sopt/mainfeature/timer/TimerFragment.kt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/TimerFragment.kt b/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/TimerFragment.kt index 9558f243..b6604c5d 100644 --- a/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/TimerFragment.kt +++ b/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/TimerFragment.kt @@ -12,6 +12,7 @@ import org.sopt.mainfeature.R import org.sopt.mainfeature.databinding.FragmentTimerBinding import org.sopt.mainfeature.timer.dummymodel.Timer import org.sopt.ui.fragment.colorOf +import org.sopt.ui.fragment.snackBar class TimerFragment : Fragment() { private var _binding: FragmentTimerBinding? = null @@ -45,14 +46,14 @@ class TimerFragment : Fragment() { } } - completeTimerAdapter = CompleteTimerAdapter({}) + completeTimerAdapter = CompleteTimerAdapter({ snackBar(binding.root, {"안녕"})}) waitTimerAdapter = WaitTimerAdapter({}, {}) val list = listOf( Timer(1, "네이버", "일요일", true, 8, 37), Timer(1, "네이버", "일요일", true, 8, 37) ) - + //val list = emptyList() completeTimerAdapter.submitList(list) waitTimerAdapter.submitList(list) binding.tvTimerCompleteCount.text = list.count().toString() @@ -62,6 +63,9 @@ class TimerFragment : Fragment() { val colorStateList = ColorStateList.valueOf(color) binding.flTimerCompleteCount.backgroundTintList = colorStateList binding.tvTimerCompleteCount.setTextColor(textColor) + binding.tvTimerNotComplete.isGone = true + } else { + binding.tvTimerNotComplete.isVisible = true } binding.rvTimerComplete.adapter = completeTimerAdapter binding.rvTimerWait.adapter = waitTimerAdapter From d3fe66d4f23c1fa342522113b0dd07a7bbe57418 Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Thu, 4 Jan 2024 07:57:55 +0900 Subject: [PATCH 059/115] =?UTF-8?q?[mod]=20#18=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mainfeature/timer/CompleteTimerAdapter.kt | 32 +++++++++---------- .../timer/CompleteTimerViewHolder.kt | 21 ++++++++---- .../sopt/mainfeature/timer/TimerFragment.kt | 10 +++--- .../mainfeature/timer/WaitTimerViewHolder.kt | 29 +++++++++++------ .../src/main/res/layout/item_timer_wait.xml | 2 ++ 5 files changed, 57 insertions(+), 37 deletions(-) diff --git a/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/CompleteTimerAdapter.kt b/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/CompleteTimerAdapter.kt index bfe68d6e..75ee6af6 100644 --- a/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/CompleteTimerAdapter.kt +++ b/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/CompleteTimerAdapter.kt @@ -8,23 +8,23 @@ import org.sopt.mainfeature.timer.dummymodel.Timer import org.sopt.ui.view.ItemDiffCallback class CompleteTimerAdapter( - private val onClicked: (Timer) -> Unit, + private val onClicked: (Timer) -> Unit, ) : ListAdapter(DiffUtil) { - override fun onBindViewHolder(holder: CompleteTimerViewHolder, position: Int) { - holder.onBind(getItem(position)) - } + override fun onBindViewHolder(holder: CompleteTimerViewHolder, position: Int) { + holder.onBind(getItem(position)) + } - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CompleteTimerViewHolder { - return CompleteTimerViewHolder( - ItemTimerCompleteBinding.inflate(LayoutInflater.from(parent.context), parent, false), - onClicked - ) - } + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CompleteTimerViewHolder { + return CompleteTimerViewHolder( + ItemTimerCompleteBinding.inflate(LayoutInflater.from(parent.context), parent, false), + onClicked, + ) + } - companion object { - private val DiffUtil = ItemDiffCallback( - onItemsTheSame = { old, new -> old.id == new.id }, - onContentsTheSame = { old, new -> old == new } - ) - } + companion object { + private val DiffUtil = ItemDiffCallback( + onItemsTheSame = { old, new -> old.id == new.id }, + onContentsTheSame = { old, new -> old == new }, + ) + } } diff --git a/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/CompleteTimerViewHolder.kt b/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/CompleteTimerViewHolder.kt index 629f2222..a0578d9b 100644 --- a/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/CompleteTimerViewHolder.kt +++ b/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/CompleteTimerViewHolder.kt @@ -10,12 +10,21 @@ class CompleteTimerViewHolder( ) : RecyclerView.ViewHolder(binding.root) { fun onBind(data: Timer?) { if (data == null) return - val ampm = if(data.am)" 오전 " else " 오후 " - val minute = if(data.minute < 10)"0${data.minute}" else data.minute.toString() - binding.tvItemTimerCompleteCategory.text = data.category - binding.tvItemTimerCompleteTime.text = data.day + ampm + data.hour.toString() + ":" + minute - binding.tvItemTimerCompleteRead.setOnClickListener { - onClicked(data) + with(binding){ + val ampm = if (data.am)AM else PM + val minute = data.minute.toString().takeIf { data.minute >= 10 } ?: MINUTE_FORMAT.format(data.minute) + tvItemTimerCompleteCategory.text = data.category + tvItemTimerCompleteTime.text = TIME_FORMAT.format(data.day, ampm, data.hour, minute) + tvItemTimerCompleteRead.setOnClickListener { + onClicked(data) + } } } + + companion object { + private const val TIME_FORMAT = "%s %s %d:%s" + private const val MINUTE_FORMAT = "0%d" + private const val AM = "오전" + private const val PM = "오후" + } } diff --git a/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/TimerFragment.kt b/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/TimerFragment.kt index b6604c5d..2756d5bf 100644 --- a/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/TimerFragment.kt +++ b/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/TimerFragment.kt @@ -35,7 +35,7 @@ class TimerFragment : Fragment() { super.onViewCreated(view, savedInstanceState) binding.tvTimerTitle.setOnClickListener { - if(timerExist){ + if (timerExist) { binding.svTimerExist.isVisible = true binding.llTimerNotExist.isGone = true timerExist = false @@ -46,18 +46,18 @@ class TimerFragment : Fragment() { } } - completeTimerAdapter = CompleteTimerAdapter({ snackBar(binding.root, {"안녕"})}) + completeTimerAdapter = CompleteTimerAdapter({ snackBar(binding.root, { "안녕" }) }) waitTimerAdapter = WaitTimerAdapter({}, {}) val list = listOf( Timer(1, "네이버", "일요일", true, 8, 37), - Timer(1, "네이버", "일요일", true, 8, 37) + Timer(1, "네이버", "일요일", true, 8, 37), ) - //val list = emptyList() + // val list = emptyList() completeTimerAdapter.submitList(list) waitTimerAdapter.submitList(list) binding.tvTimerCompleteCount.text = list.count().toString() - if(list.count() != 0){ + if (list.count() != 0) { val color = colorOf(R.color.primary) val textColor = colorOf(R.color.white) val colorStateList = ColorStateList.valueOf(color) diff --git a/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/WaitTimerViewHolder.kt b/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/WaitTimerViewHolder.kt index 19b01429..ad72a03d 100644 --- a/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/WaitTimerViewHolder.kt +++ b/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/WaitTimerViewHolder.kt @@ -1,7 +1,6 @@ package org.sopt.mainfeature.timer import androidx.recyclerview.widget.RecyclerView -import org.sopt.mainfeature.databinding.ItemTimerCompleteBinding import org.sopt.mainfeature.databinding.ItemTimerWaitBinding import org.sopt.mainfeature.timer.dummymodel.Timer @@ -10,18 +9,28 @@ class WaitTimerViewHolder( private val onToggleClicked: (Timer) -> Unit, private val onMoreClicked: (Timer) -> Unit, ) : RecyclerView.ViewHolder(binding.root) { + fun onBind(data: Timer?) { if (data == null) return + with(binding) { + tvItemTimerWaitCategory.text = data.category + val ampm = if (data.am) AM else PM + val minuteText = MINUTE_FORMAT.format(data.minute).takeIf { data.minute != 0 } ?: "" + tvItemTimerWaitWhen.text = TIME_FORMAT.format(data.day, ampm, data.hour, minuteText) - binding.tvItemTimerWaitCategory.text = data.category - val minute = if(data.minute == 0) "" else " ${data.minute}분" - binding.tvItemTimerWaitWhen.text = "매주 " + data.day + " 오전 " + data.hour.toString() +"시" + minute + "마다" - - binding.root.setOnClickListener { - onToggleClicked(data) - } - binding.root.setOnClickListener { - onMoreClicked(data) + tgItemTimerWait.setOnClickListener { + onToggleClicked(data) + } + ivItemTimerWaitMore.setOnClickListener { + onMoreClicked(data) + } } } + + companion object { + private const val TIME_FORMAT = "매주 %s %s %d시%s마다" + private const val MINUTE_FORMAT = " %d분" + private const val AM = "오전" + private const val PM = "오후" + } } diff --git a/feature/mainfeature/src/main/res/layout/item_timer_wait.xml b/feature/mainfeature/src/main/res/layout/item_timer_wait.xml index b94d56d7..89556102 100644 --- a/feature/mainfeature/src/main/res/layout/item_timer_wait.xml +++ b/feature/mainfeature/src/main/res/layout/item_timer_wait.xml @@ -28,6 +28,7 @@ tools:text="카테고리 네임" /> Date: Thu, 4 Jan 2024 07:59:57 +0900 Subject: [PATCH 060/115] [chore] #18 ktlintformat --- .../java/org/sopt/mainfeature/timer/CompleteTimerViewHolder.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/CompleteTimerViewHolder.kt b/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/CompleteTimerViewHolder.kt index a0578d9b..6296941f 100644 --- a/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/CompleteTimerViewHolder.kt +++ b/feature/mainfeature/src/main/java/org/sopt/mainfeature/timer/CompleteTimerViewHolder.kt @@ -10,7 +10,7 @@ class CompleteTimerViewHolder( ) : RecyclerView.ViewHolder(binding.root) { fun onBind(data: Timer?) { if (data == null) return - with(binding){ + with(binding) { val ampm = if (data.am)AM else PM val minute = data.minute.toString().takeIf { data.minute >= 10 } ?: MINUTE_FORMAT.format(data.minute) tvItemTimerCompleteCategory.text = data.category From 38772207357ee7e1a7a7763f2abb1398daf4b1e5 Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Thu, 4 Jan 2024 08:38:39 +0900 Subject: [PATCH 061/115] =?UTF-8?q?[chore]=20#18=20=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=EB=A7=81=20=EB=A6=AC=EC=86=8C=EC=8A=A4=20=EA=B5=AC=EB=B6=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- feature/mainfeature/src/main/res/values/strings.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/feature/mainfeature/src/main/res/values/strings.xml b/feature/mainfeature/src/main/res/values/strings.xml index f7f32c4a..57e45de4 100644 --- a/feature/mainfeature/src/main/res/values/strings.xml +++ b/feature/mainfeature/src/main/res/values/strings.xml @@ -5,7 +5,8 @@ TIMER MY placeholder - TIMER + + TIMER 알림 설정이 꺼져 있어요 타이머 기능을 이용하시려면 기기 설정 > 알림 From e3a11a090b64cf885183ac040c95708ec7adb9d7 Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Fri, 5 Jan 2024 01:40:25 +0900 Subject: [PATCH 062/115] =?UTF-8?q?[add]=20#18=20=EC=9D=B4=EB=AF=B8?= =?UTF-8?q?=EC=A7=80=20=EB=A6=AC=EC=86=8C=EC=8A=A4=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/res/drawable/img_timer_none.png | Bin 0 -> 42143 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 feature/mainfeature/src/main/res/drawable/img_timer_none.png diff --git a/feature/mainfeature/src/main/res/drawable/img_timer_none.png b/feature/mainfeature/src/main/res/drawable/img_timer_none.png new file mode 100644 index 0000000000000000000000000000000000000000..2309b0973c52d9dbbfa0d9894ce23a5cd4230f41 GIT binary patch literal 42143 zcmeFY^;cV6)GZvG;ygu4aVt=)KyeEiDDEXlTilAfOOZk$xD?mo6qlfFDee$7xC9IC zcGLI0-@owvbQvRqK^Xh&efHUFuDRx1=c}eVh!F239smF!R92GL1^_S^{(W$k*jb`i6MC`}Rd!(fnzZswqRxI| zc(@J?u!@F;3m~(2Xg-^2WcM91`O3R+h5v+6j3$$4O#5 O@w>)Au(@4HjYN)cOQn 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 literal 0 HcmV?d00001 From edc2d1372a1c80d0b2f92ce44846b86d4b766cd9 Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Fri, 5 Jan 2024 01:40:41 +0900 Subject: [PATCH 063/115] =?UTF-8?q?[chore]=20#18=20=ED=85=8C=EB=A7=88=20?= =?UTF-8?q?=EB=B0=B1=EA=B7=B8=EB=9D=BC=EC=9A=B4=EB=93=9C=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- feature/mainfeature/src/main/res/values/themes.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/feature/mainfeature/src/main/res/values/themes.xml b/feature/mainfeature/src/main/res/values/themes.xml index 21917539..14162ca2 100644 --- a/feature/mainfeature/src/main/res/values/themes.xml +++ b/feature/mainfeature/src/main/res/values/themes.xml @@ -7,6 +7,7 @@ @android:color/transparent true + @color/background