From 2408724bde130ddfd2eae2eec5efc812680964b6 Mon Sep 17 00:00:00 2001 From: Yu Jin Date: Wed, 28 May 2025 18:49:24 +0900 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=EC=9D=B4=EC=A0=84=EC=97=90=20?= =?UTF-8?q?=EC=84=A0=ED=83=9D=ED=96=88=EB=8D=98=20=EC=8B=9D=EC=82=AC=20?= =?UTF-8?q?=EC=8B=9C=EA=B0=84=EB=8C=80=EB=A5=BC=20=EC=A0=80=EC=9E=A5?= =?UTF-8?q?=ED=95=B4=EC=84=9C=20=EB=82=A0=EC=A7=9C=EB=A5=BC=20=EB=B0=94?= =?UTF-8?q?=EB=80=8C=EC=96=B4=EB=8F=84=20=EA=B7=B8=20=EC=8B=9C=EA=B0=84?= =?UTF-8?q?=EB=8C=80=EB=A1=9C=20=EB=B3=B4=EC=97=AC=EC=A7=80=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EC=88=98=EC=A0=95=20(iOS=EC=99=80=20=ED=86=B5?= =?UTF-8?q?=EC=9D=BC)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../android/data/MySharedPreferences.kt | 11 +++++- .../cafeteria/CafeteriaFragment.kt | 15 ++++++-- .../cafeteria/CafeteriaViewPagerAdapter.kt | 35 +++++++------------ 3 files changed, 36 insertions(+), 25 deletions(-) diff --git a/app/src/main/java/com/eatssu/android/data/MySharedPreferences.kt b/app/src/main/java/com/eatssu/android/data/MySharedPreferences.kt index 91e946e98..85e73637d 100644 --- a/app/src/main/java/com/eatssu/android/data/MySharedPreferences.kt +++ b/app/src/main/java/com/eatssu/android/data/MySharedPreferences.kt @@ -4,7 +4,6 @@ package com.eatssu.android.data import android.content.Context import android.content.SharedPreferences -//자동 로그인을 위한 SharedPreferences object MySharedPreferences { private val MY_ACCOUNT: String = "account" @@ -100,4 +99,14 @@ object MySharedPreferences { context.getSharedPreferences(MY_ACCOUNT, Context.MODE_PRIVATE) return prefs.getBoolean("ALARM_ON", false) } + + fun savePreTimePosition(context: Context, position: Int) { + val prefs = context.getSharedPreferences(MY_ACCOUNT, Context.MODE_PRIVATE) + prefs.edit().putInt("PRE_TIME_POSITION", position).apply() + } + + fun getPreTimePosition(context: Context): Int { + val prefs = context.getSharedPreferences(MY_ACCOUNT, Context.MODE_PRIVATE) + return prefs.getInt("PRE_TIME_POSITION", -1) + } } \ No newline at end of file diff --git a/app/src/main/java/com/eatssu/android/presentation/cafeteria/CafeteriaFragment.kt b/app/src/main/java/com/eatssu/android/presentation/cafeteria/CafeteriaFragment.kt index 88f85cbf9..b029af45a 100644 --- a/app/src/main/java/com/eatssu/android/presentation/cafeteria/CafeteriaFragment.kt +++ b/app/src/main/java/com/eatssu/android/presentation/cafeteria/CafeteriaFragment.kt @@ -10,9 +10,11 @@ import androidx.fragment.app.activityViewModels import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView import androidx.viewpager2.widget.ViewPager2 +import com.eatssu.android.App +import com.eatssu.android.data.MySharedPreferences import com.eatssu.android.databinding.FragmentCafeteriaBinding -import com.eatssu.android.presentation.base.BaseFragment import com.eatssu.android.presentation.MainViewModel +import com.eatssu.android.presentation.base.BaseFragment import com.eatssu.android.presentation.cafeteria.calendar.CalendarAdapter import com.eatssu.android.presentation.cafeteria.calendar.CalendarAdapter.OnItemListener import com.eatssu.android.presentation.util.CalendarUtil @@ -45,11 +47,20 @@ class CafeteriaFragment : BaseFragment(), OnItemListen val viewpagerFragmentAdapter = CafeteriaViewPagerAdapter(requireActivity()) viewPager.adapter = viewpagerFragmentAdapter - viewPager.setCurrentItem(viewpagerFragmentAdapter.getDefaultFragmentPosition(), false) + viewPager.setCurrentItem( + viewpagerFragmentAdapter.getDefaultFragmentPosition(App.appContext), + false + ) val tabTitles = listOf("아침", "점심", "저녁") TabLayoutMediator(tabLayout, viewPager) { tab, position -> tab.text = tabTitles[position] }.attach() + viewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() { + override fun onPageSelected(position: Int) { + MySharedPreferences.savePreTimePosition(requireContext(), position) + } + }) + initWidgets() CalendarUtil.selectedDate = LocalDate.now() mainViewModel.setData(CalendarUtil.selectedDate) diff --git a/app/src/main/java/com/eatssu/android/presentation/cafeteria/CafeteriaViewPagerAdapter.kt b/app/src/main/java/com/eatssu/android/presentation/cafeteria/CafeteriaViewPagerAdapter.kt index ef7279195..52c02d388 100644 --- a/app/src/main/java/com/eatssu/android/presentation/cafeteria/CafeteriaViewPagerAdapter.kt +++ b/app/src/main/java/com/eatssu/android/presentation/cafeteria/CafeteriaViewPagerAdapter.kt @@ -1,10 +1,10 @@ package com.eatssu.android.presentation.cafeteria -import android.os.Build -import androidx.annotation.RequiresApi +import android.content.Context import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentActivity import androidx.viewpager2.adapter.FragmentStateAdapter +import com.eatssu.android.data.MySharedPreferences import com.eatssu.android.data.enums.Time import com.eatssu.android.presentation.cafeteria.menu.MenuFragment import java.time.LocalTime @@ -12,7 +12,6 @@ import java.time.LocalTime class CafeteriaViewPagerAdapter(fragmentActivity: FragmentActivity) : FragmentStateAdapter(fragmentActivity) { - // 1. ViewPager2에 연결할 Fragment 들을 생성 private val fragmentList = listOf( MenuFragment.newInstance(Time.MORNING), MenuFragment.newInstance(Time.LUNCH), @@ -21,33 +20,25 @@ class CafeteriaViewPagerAdapter(fragmentActivity: FragmentActivity) : lateinit var menuDate : String - // 2. ViesPager2에서 노출시킬 Fragment 의 갯수 설정 override fun getItemCount(): Int { return fragmentList.size } - // 3. ViewPager2의 각 페이지에서 노출할 Fragment 설정 override fun createFragment(position: Int): Fragment { - /*if(fragmentList[position] is LunchFragment) { - (fragmentList[position] as LunchFragment).setDate(menuDate) - }*/ return fragmentList[position] } - // 4. 디폴트로 노출할 Fragment의 위치를 설정 - @RequiresApi(Build.VERSION_CODES.O) - fun getDefaultFragmentPosition(): Int { - // 여기에서 디폴트로 노출할 Fragment의 위치를 반환해줍니다. - // 예를 들어, 첫 번째 Fragment를 디폴트로 설정하려면 0을 반환합니다. - - val time = LocalTime.now() - - val selectedIndex: Int = when (time.hour) { - in 0..9 -> 0 //아침 - in 10..15 -> 1 //점심 - in 16..24 -> 2 //저녁 - else -> 1 + fun getDefaultFragmentPosition(context: Context): Int { + val savedPosition = MySharedPreferences.getPreTimePosition(context) + return if (savedPosition in 0..2) savedPosition else { + // fallback: 시간 기준 + val time = LocalTime.now() + when (time.hour) { + in 0..9 -> 0 + in 10..15 -> 1 + in 16..23 -> 2 + else -> 1 + } } - return selectedIndex } } From bb1c5502a7c441f755760c4a30bbc3fb9372c12f Mon Sep 17 00:00:00 2001 From: Yu Jin Date: Wed, 28 May 2025 18:51:23 +0900 Subject: [PATCH 2/2] =?UTF-8?q?chore:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20=EC=A3=BC=EC=84=9D=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../android/presentation/cafeteria/CafeteriaViewPagerAdapter.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/java/com/eatssu/android/presentation/cafeteria/CafeteriaViewPagerAdapter.kt b/app/src/main/java/com/eatssu/android/presentation/cafeteria/CafeteriaViewPagerAdapter.kt index 52c02d388..57224e4e3 100644 --- a/app/src/main/java/com/eatssu/android/presentation/cafeteria/CafeteriaViewPagerAdapter.kt +++ b/app/src/main/java/com/eatssu/android/presentation/cafeteria/CafeteriaViewPagerAdapter.kt @@ -31,7 +31,6 @@ class CafeteriaViewPagerAdapter(fragmentActivity: FragmentActivity) : fun getDefaultFragmentPosition(context: Context): Int { val savedPosition = MySharedPreferences.getPreTimePosition(context) return if (savedPosition in 0..2) savedPosition else { - // fallback: 시간 기준 val time = LocalTime.now() when (time.hour) { in 0..9 -> 0