diff --git a/.idea/compiler.xml b/.idea/compiler.xml index b589d56e..fb7f4a8a 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 7fa24a26..89bc849b 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,7 +1,7 @@ + - - + diff --git a/app/.gitignore b/app/.gitignore index 42afabfd..5c174d1b 100644 --- a/app/.gitignore +++ b/app/.gitignore @@ -1 +1,2 @@ -/build \ No newline at end of file +/build +kakao_string.xml \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index b5d24897..da1251f4 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -114,6 +114,10 @@ dependencies { implementation 'com.google.dagger:hilt-android:2.47' annotationProcessor 'com.google.dagger:hilt-compiler:2.47' + // viewmodel과 livedata + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.6.1" + // implementation "androidx.security:security-crypto:1.0.0" } \ No newline at end of file diff --git a/app/src/main/java/com/eatssu/android/data/model/response/GetMyReviewResponse.kt b/app/src/main/java/com/eatssu/android/data/model/response/GetMyReviewResponse.kt index 6a80a8ed..0acd4795 100644 --- a/app/src/main/java/com/eatssu/android/data/model/response/GetMyReviewResponse.kt +++ b/app/src/main/java/com/eatssu/android/data/model/response/GetMyReviewResponse.kt @@ -7,9 +7,12 @@ data class GetMyReviewResponse( ){ data class Data( val content: String, - val grade: Int, + val reviewId : Int, + val mainGrade: Int, + val amountGrade: Int, + val tasteGrade : Int, val imgUrlList: List, - val tagList: List, - val writeDate: String + val writeDate: String, + val menuName: String ) } \ No newline at end of file diff --git a/app/src/main/java/com/eatssu/android/ui/calendar/CalendarActivity.kt b/app/src/main/java/com/eatssu/android/ui/calendar/CalendarActivity.kt index 5d5cac4c..f5ff728b 100644 --- a/app/src/main/java/com/eatssu/android/ui/calendar/CalendarActivity.kt +++ b/app/src/main/java/com/eatssu/android/ui/calendar/CalendarActivity.kt @@ -7,11 +7,9 @@ import android.os.Bundle import android.text.style.ForegroundColorSpan import android.text.style.RelativeSizeSpan import android.text.style.StyleSpan -import android.util.Log import android.view.Window import androidx.appcompat.app.AppCompatActivity import com.eatssu.android.databinding.ActivityCalendarBinding -import com.eatssu.android.ui.main.MainActivity import com.prolificinteractive.materialcalendarview.* import com.prolificinteractive.materialcalendarview.format.DateFormatTitleFormatter import com.prolificinteractive.materialcalendarview.format.TitleFormatter @@ -21,6 +19,7 @@ import java.util.* class CalendarActivity : AppCompatActivity() { private lateinit var binding: ActivityCalendarBinding lateinit var calendar: MaterialCalendarView + private lateinit var viewModel: CalendarViewModel val today = CalendarDay.today() diff --git a/app/src/main/java/com/eatssu/android/ui/calendar/CalendarAdapter.kt b/app/src/main/java/com/eatssu/android/ui/calendar/CalendarAdapter.kt index 4cbb5a1a..70d05483 100644 --- a/app/src/main/java/com/eatssu/android/ui/calendar/CalendarAdapter.kt +++ b/app/src/main/java/com/eatssu/android/ui/calendar/CalendarAdapter.kt @@ -1,38 +1,55 @@ package com.eatssu.android.ui.calendar +import android.content.Intent import android.os.Build +import android.os.Bundle import android.util.Log import android.view.LayoutInflater +import android.view.View import android.view.ViewGroup import androidx.annotation.RequiresApi +import androidx.core.content.ContextCompat import androidx.recyclerview.widget.RecyclerView import com.eatssu.android.R import com.eatssu.android.databinding.ItemCalendarListBinding +import com.eatssu.android.ui.main.MainActivity import java.time.LocalDate import java.time.format.DateTimeFormatter import java.util.* + class CalendarAdapter(private val cList: List) : RecyclerView.Adapter() { + private var allViewHolders : List = mutableListOf() + private var mListener: OnItemClickListener? = null - class CalendarViewHolder(private val binding: ItemCalendarListBinding) : + inner class CalendarViewHolder(val binding: ItemCalendarListBinding) : RecyclerView.ViewHolder(binding.root) { + + private var selectedDate: String? = null + lateinit var today : String + lateinit var day : String + @RequiresApi(Build.VERSION_CODES.O) fun bind(item: CalendarData) { binding.date.text = item.cl_date binding.day.text = item.cl_day - var today = binding.date.text - var day = binding.day.text + today = binding.date.text as String + day = binding.day.text as String // 오늘 날짜 val now = LocalDate.now() - .format(DateTimeFormatter.ofPattern("dd").withLocale(Locale.forLanguageTag("ko"))) + .format( + DateTimeFormatter.ofPattern("dd").withLocale(Locale.forLanguageTag("ko")) + ) + // 오늘 날짜와 캘린더의 오늘 날짜가 같을 경우 background_blue 적용하기 - if (today == now) { + if (now.equals(today)) { + binding.date.isSelected = true; + binding.day.isSelected = true; binding.weekCardview.setBackgroundResource(R.drawable.selector_background_blue) } - Log.i("now", now) } } @@ -45,9 +62,31 @@ class CalendarAdapter(private val cList: List) : @RequiresApi(Build.VERSION_CODES.O) override fun onBindViewHolder(holder: CalendarViewHolder, position: Int) { holder.bind(cList[position]) + + allViewHolders = allViewHolders.plus(holder) + + holder.itemView.setOnClickListener { v -> + val pos = holder.adapterPosition + if (pos != RecyclerView.NO_POSITION) { + mListener?.onItemClick(v, cList.get(position)) + } + } + } override fun getItemCount(): Int { return cList.size } + + fun setOnItemClickListener(listener: OnItemClickListener?) { + mListener = listener + } + + fun returnViewHolderList(): List { + return allViewHolders + } } + + interface OnItemClickListener { + fun onItemClick(v: View?, data: CalendarData) + } diff --git a/app/src/main/java/com/eatssu/android/ui/calendar/CalendarFragment.kt b/app/src/main/java/com/eatssu/android/ui/calendar/CalendarFragment.kt index 77d55ad5..6bbdb7d8 100644 --- a/app/src/main/java/com/eatssu/android/ui/calendar/CalendarFragment.kt +++ b/app/src/main/java/com/eatssu/android/ui/calendar/CalendarFragment.kt @@ -1,26 +1,30 @@ package com.eatssu.android.ui.calendar +import android.annotation.SuppressLint import android.content.Intent -import android.content.Intent.getIntent import android.os.Build import android.os.Bundle import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.TextView +import android.widget.Toast import androidx.annotation.RequiresApi import androidx.fragment.app.Fragment import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView import com.eatssu.android.R import com.eatssu.android.databinding.FragmentCalendarBinding +import com.prolificinteractive.materialcalendarview.DayViewFacade import java.time.DayOfWeek +import java.time.LocalDate import java.time.LocalDateTime import java.time.format.DateTimeFormatter +import java.time.format.TextStyle import java.time.temporal.TemporalAdjusters import java.util.* - class CalendarFragment : Fragment() { private var _binding: FragmentCalendarBinding? = null @@ -48,8 +52,6 @@ class CalendarFragment : Fragment() { calendarAdapter = CalendarAdapter(calendarList) - - calendarList.apply { val dateFormat = DateTimeFormatter.ofPattern("dd").withLocale(Locale.forLanguageTag("ko")) @@ -57,15 +59,18 @@ class CalendarFragment : Fragment() { .withLocale(Locale.forLanguageTag("ko")) val localDate = LocalDateTime.now().format(monthFormat) - binding.textYearMonth.text = localDate + val newDate = arguments?.getString("Date") + if (newDate != null) { + Log.d("Date", newDate) + } - var preSunday: LocalDateTime = LocalDateTime.now().with( + val preSunday: LocalDateTime = LocalDateTime.now().with( TemporalAdjusters.previous( DayOfWeek.SUNDAY ) ) - + Log.d("preSunday", preSunday.toString()) for (i in 0..6) { Log.d("날짜만", week_day[i]) @@ -79,35 +84,14 @@ class CalendarFragment : Fragment() { } Log.d("저번 주 일요일 기준으로 시작!", preSunday.plusDays(i.toLong()).format(dateFormat)) } - } - binding.weekRecycler.adapter = calendarAdapter - binding.weekRecycler.layoutManager = GridLayoutManager(context, 7) + binding.weekRecycler.adapter = calendarAdapter + binding.weekRecycler.layoutManager = GridLayoutManager(context, 7) - binding.textYearMonth.setOnClickListener { - val intent = Intent(context, CalendarActivity::class.java); - startActivity(intent); } - - - } override fun onResume() { - val intent = Intent() - //text 키값으로 데이터를 받는다. String을 받아야 하므로 getStringExtra()를 사용함 - /*val selectdate = this.arguments?.getString("changedate") - Log.d("selectdate", selectdate.toString())*/ - val intentdate = intent.getStringExtra("intentdate") - Log.d("intentdate", intentdate.toString()) - - binding.btnCalendarLeft.setOnClickListener { - binding.textYearMonth.text = null - binding.textYearMonth.text = intentdate - /*binding.btnCalendarRight.setOnClickListener{ - binding.textYearMonth.text = null - binding.textYearMonth.text = LocalDateTime.now().plusDays(1).format(monthFormat).toString() - }*/ - } super.onResume() + Log.d("fragment", "onResumed") } } diff --git a/app/src/main/java/com/eatssu/android/ui/calendar/CalendarViewModel.kt b/app/src/main/java/com/eatssu/android/ui/calendar/CalendarViewModel.kt new file mode 100644 index 00000000..4a14a839 --- /dev/null +++ b/app/src/main/java/com/eatssu/android/ui/calendar/CalendarViewModel.kt @@ -0,0 +1,17 @@ +package com.eatssu.android.ui.calendar + +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel + +class CalendarViewModel : ViewModel() { + private val data = MutableLiveData() + + fun setData(dataToSend: String) { + data.value = dataToSend + } + + fun getData(): LiveData { + return data + } +} diff --git a/app/src/main/java/com/eatssu/android/ui/calendar/MenuDate.kt b/app/src/main/java/com/eatssu/android/ui/calendar/MenuDate.kt new file mode 100644 index 00000000..de743be7 --- /dev/null +++ b/app/src/main/java/com/eatssu/android/ui/calendar/MenuDate.kt @@ -0,0 +1,5 @@ +package com.eatssu.android.ui.calendar + +class MenuDate(date: String){ + var date: String = date // 날짜 +} \ No newline at end of file diff --git a/app/src/main/java/com/eatssu/android/ui/infopage/InfoActivity_Dodam.kt b/app/src/main/java/com/eatssu/android/ui/infopage/InfoActivity_Dodam.kt index 2ee6e558..51b0f7c1 100644 --- a/app/src/main/java/com/eatssu/android/ui/infopage/InfoActivity_Dodam.kt +++ b/app/src/main/java/com/eatssu/android/ui/infopage/InfoActivity_Dodam.kt @@ -90,4 +90,8 @@ class InfoActivity_Dodam : AppCompatActivity() { private fun getNonFixed() { } + + override fun finish() { + super.finish() + } } diff --git a/app/src/main/java/com/eatssu/android/ui/infopage/InfoActivity_Food.kt b/app/src/main/java/com/eatssu/android/ui/infopage/InfoActivity_Food.kt index ee6d815a..07e5b100 100644 --- a/app/src/main/java/com/eatssu/android/ui/infopage/InfoActivity_Food.kt +++ b/app/src/main/java/com/eatssu/android/ui/infopage/InfoActivity_Food.kt @@ -85,4 +85,8 @@ class InfoActivity_Food : AppCompatActivity() { private fun getNonFixed() { } + + override fun finish() { + super.finish() + } } diff --git a/app/src/main/java/com/eatssu/android/ui/infopage/InfoActivity_Gisik.kt b/app/src/main/java/com/eatssu/android/ui/infopage/InfoActivity_Gisik.kt index 8419f09d..0ada7e2b 100644 --- a/app/src/main/java/com/eatssu/android/ui/infopage/InfoActivity_Gisik.kt +++ b/app/src/main/java/com/eatssu/android/ui/infopage/InfoActivity_Gisik.kt @@ -1,20 +1,15 @@ package com.eatssu.android.ui.infopage -import android.icu.text.IDNA.Info +import RetrofitImpl +import android.R import android.os.Build -import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.util.Log -import android.widget.Toast import androidx.annotation.RequiresApi -import androidx.recyclerview.widget.RecyclerView +import androidx.appcompat.app.AppCompatActivity import com.eatssu.android.data.enums.RestaurantType -import com.eatssu.android.data.model.request.ChangeNickname -import com.eatssu.android.data.model.response.GetMenuInfoListResponse import com.eatssu.android.data.model.response.InfoResponse import com.eatssu.android.data.service.InfoService -import com.eatssu.android.data.service.MenuService -import com.eatssu.android.data.service.UserService import com.eatssu.android.databinding.ActivityInfoGisikBinding import net.daum.mf.map.api.MapPOIItem import net.daum.mf.map.api.MapPoint @@ -24,7 +19,8 @@ import retrofit2.Callback import retrofit2.Response import retrofit2.Retrofit -class InfoActivity_Gisik : AppCompatActivity() { + +class InfoActivity_Gisik : AppCompatActivity(){ private lateinit var viewBinding: ActivityInfoGisikBinding lateinit var retrofit: Retrofit private lateinit var infoService: InfoService @@ -43,7 +39,6 @@ class InfoActivity_Gisik : AppCompatActivity() { // 중심점 변경 - 레지던스홀 mapview.setMapCenterPoint(MapPoint.mapPointWithGeoCoord(37.495488,126.959173), true); - //mapview.zoomIn(true) val marker = MapPOIItem() marker.apply { @@ -101,4 +96,10 @@ class InfoActivity_Gisik : AppCompatActivity() { private fun getNonFixed() { } + + override fun finish() { + super.finish() + } + + } diff --git a/app/src/main/java/com/eatssu/android/ui/infopage/InfoActivity_Haksik.kt b/app/src/main/java/com/eatssu/android/ui/infopage/InfoActivity_Haksik.kt index e9f1bdad..ead6d49f 100644 --- a/app/src/main/java/com/eatssu/android/ui/infopage/InfoActivity_Haksik.kt +++ b/app/src/main/java/com/eatssu/android/ui/infopage/InfoActivity_Haksik.kt @@ -84,4 +84,8 @@ class InfoActivity_Haksik : AppCompatActivity() { private fun getNonFixed() { } + + override fun finish() { + super.finish() + } } diff --git a/app/src/main/java/com/eatssu/android/ui/infopage/InfoActivity_Kitchen.kt b/app/src/main/java/com/eatssu/android/ui/infopage/InfoActivity_Kitchen.kt index 00bc74a1..85e3d379 100644 --- a/app/src/main/java/com/eatssu/android/ui/infopage/InfoActivity_Kitchen.kt +++ b/app/src/main/java/com/eatssu/android/ui/infopage/InfoActivity_Kitchen.kt @@ -85,4 +85,8 @@ class InfoActivity_Kitchen : AppCompatActivity() { private fun getNonFixed() { } + + override fun finish() { + super.finish() + } } diff --git a/app/src/main/java/com/eatssu/android/ui/infopage/InfoActivity_Snack.kt b/app/src/main/java/com/eatssu/android/ui/infopage/InfoActivity_Snack.kt index b3bab50b..4447d445 100644 --- a/app/src/main/java/com/eatssu/android/ui/infopage/InfoActivity_Snack.kt +++ b/app/src/main/java/com/eatssu/android/ui/infopage/InfoActivity_Snack.kt @@ -85,4 +85,8 @@ class InfoActivity_Snack : AppCompatActivity() { private fun getNonFixed() { } + + override fun finish() { + super.finish() + } } diff --git a/app/src/main/java/com/eatssu/android/ui/login/SocialLoginActivity.kt b/app/src/main/java/com/eatssu/android/ui/login/SocialLoginActivity.kt index 65bb5c71..36ad49ba 100644 --- a/app/src/main/java/com/eatssu/android/ui/login/SocialLoginActivity.kt +++ b/app/src/main/java/com/eatssu/android/ui/login/SocialLoginActivity.kt @@ -114,6 +114,11 @@ class SocialLoginActivity : AppCompatActivity() { } } } + binding.btnLookAround.setOnClickListener() { + val intent = Intent(this, MainActivity::class.java) // 인텐트를 생성해줌, + startActivity(intent) // 화면 전환을 시켜줌 + finish() + } } diff --git a/app/src/main/java/com/eatssu/android/ui/main/LunchFragment.kt b/app/src/main/java/com/eatssu/android/ui/main/LunchFragment.kt index 19f2943a..dc3bcaf1 100644 --- a/app/src/main/java/com/eatssu/android/ui/main/LunchFragment.kt +++ b/app/src/main/java/com/eatssu/android/ui/main/LunchFragment.kt @@ -10,6 +10,7 @@ import android.view.View import android.view.ViewGroup import androidx.annotation.RequiresApi import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.eatssu.android.adapter.* @@ -18,8 +19,11 @@ import com.eatssu.android.data.model.response.GetFixedMenuResponse import com.eatssu.android.data.model.response.GetTodayMealResponse import com.eatssu.android.data.service.MenuService import com.eatssu.android.databinding.FragmentLunchBinding +import com.eatssu.android.ui.calendar.CalendarViewModel +import com.eatssu.android.ui.calendar.MenuDate import com.eatssu.android.ui.infopage.* import retrofit2.* +import java.time.LocalDate import java.time.LocalDateTime import java.time.format.DateTimeFormatter import java.util.* @@ -31,6 +35,8 @@ class LunchFragment : Fragment() { lateinit var retrofit: Retrofit lateinit var menuService: MenuService + private var menuDate : String = "20230714" + val time:String = "LUNCH" override fun onCreateView( inflater: LayoutInflater, @@ -44,6 +50,10 @@ class LunchFragment : Fragment() { @RequiresApi(Build.VERSION_CODES.O) override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + + val calendardate = this.arguments?.getString("calendardata") + Log.d("lunchdate", "$calendardate") + init() lodeData() } @@ -143,33 +153,43 @@ class LunchFragment : Fragment() { recyclerView: RecyclerView ) { val monthFormat = - DateTimeFormatter.ofPattern("yyyyMMdd").withLocale(Locale.forLanguageTag("ko")) + DateTimeFormatter.ofPattern("yyyyMMdd").withLocale (Locale.forLanguageTag("ko")) val localDate = LocalDateTime.now().format(monthFormat) - //date 자리에 localDate나 호출해서 불러온 날짜를 넣으면 됨 - //지금은 날짜를 20230714로 고정해두었음 - menuService.getTodayMeal("20230714", restaurantType.toString(),time) - .enqueue(object : Callback { - override fun onResponse( - call: Call, - response: Response - ) { - if (response.isSuccessful) { - val body = response.body() - body?.let { - setAdapterTodayMeal(it, restaurantType,recyclerView) + // ViewModelProvider를 통해 ViewModel 가져오기 + val viewModel = ViewModelProvider(requireActivity()).get(CalendarViewModel::class.java) + + // ViewModel에서 데이터 가져오기 + viewModel.getData().observe(viewLifecycleOwner, androidx.lifecycle.Observer { dataReceived -> + menuDate = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMM")) + dataReceived + //menuDate = "202307$dataReceived" + Log.d("lunchdate", menuDate) + menuService.getTodayMeal(menuDate, restaurantType.toString(),time) + .enqueue(object : Callback { + override fun onResponse( + call: Call, + response: Response + ) { + if (response.isSuccessful) { + val body = response.body() + body?.let { + setAdapterTodayMeal(it, restaurantType,recyclerView) + } + Log.d("post", "onResponse 성공" + response.body()) + + } else { + Log.d("post", "onResponse 실패 투데이밀" + response.code()+response.message()) } - Log.d("post", "onResponse 성공" + response.body()) + } - } else { - Log.d("post", "onResponse 실패 투데이밀" + response.code()+response.message()) + override fun onFailure(call: Call, t: Throwable) { + Log.d("post", "onFailure 에러: 나다${t.message}+ ${call}" + "ddd") } - } + }) + }) + //date 자리에 localDate나 호출해서 불러온 날짜를 넣으면 됨 + //지금은 날짜를 20230714로 고정해두었음 - override fun onFailure(call: Call, t: Throwable) { - Log.d("post", "onFailure 에러: 나다${t.message}+ ${call}" + "ddd") - } - }) } @@ -207,4 +227,4 @@ class LunchFragment : Fragment() { super.onDestroyView() _binding = null } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/eatssu/android/ui/main/MainActivity.kt b/app/src/main/java/com/eatssu/android/ui/main/MainActivity.kt index 22a6858d..24c8d610 100644 --- a/app/src/main/java/com/eatssu/android/ui/main/MainActivity.kt +++ b/app/src/main/java/com/eatssu/android/ui/main/MainActivity.kt @@ -1,44 +1,34 @@ package com.eatssu.android.ui.main import com.eatssu.android.R -import android.annotation.SuppressLint -import android.content.Context import android.content.Intent -import android.content.pm.PackageInfo -import android.content.pm.PackageManager import android.os.Build import androidx.appcompat.app.AppCompatActivity import android.os.Bundle -import android.util.Base64.NO_WRAP -import android.util.Base64.encodeToString import android.util.Log -import android.view.LayoutInflater import android.view.Menu import android.view.MenuItem -import android.widget.FrameLayout +import android.view.View import androidx.annotation.RequiresApi +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.GridLayoutManager import androidx.viewpager2.widget.ViewPager2 import com.eatssu.android.data.MySharedPreferences import com.eatssu.android.databinding.ActivityMainBinding -import com.eatssu.android.ui.calendar.CalendarFragment -import com.eatssu.android.ui.BaseActivity -import com.eatssu.android.ui.calendar.CalendarActivity -import com.eatssu.android.ui.main.ViewPager2Adapter +import com.eatssu.android.ui.calendar.* import com.eatssu.android.ui.mypage.ChangeNicknameActivity import com.eatssu.android.ui.mypage.MyPageActivity import com.google.android.material.tabs.TabLayout import com.google.android.material.tabs.TabLayoutMediator import com.prolificinteractive.materialcalendarview.* -import com.prolificinteractive.materialcalendarview.format.ArrayWeekDayFormatter -import com.prolificinteractive.materialcalendarview.format.DateFormatTitleFormatter -import com.prolificinteractive.materialcalendarview.format.MonthArrayTitleFormatter -import com.prolificinteractive.materialcalendarview.format.TitleFormatter import java.security.MessageDigest import java.security.NoSuchAlgorithmException import java.text.SimpleDateFormat +import java.time.DayOfWeek import java.time.LocalDate import java.time.LocalDateTime import java.time.format.DateTimeFormatter +import java.time.temporal.TemporalAdjusters import java.util.* class MainActivity : AppCompatActivity() { @@ -47,6 +37,10 @@ class MainActivity : AppCompatActivity() { private var year: String = "" private var month: String = "" private var day: String = "" + lateinit var calendarAdapter: CalendarAdapter + private var calendarList = ArrayList() + private var allViewHolders : List = mutableListOf() + @RequiresApi(Build.VERSION_CODES.O) override fun onCreate(savedInstanceState: Bundle?) { @@ -90,10 +84,104 @@ class MainActivity : AppCompatActivity() { startActivity(intent) // 화면 전환을 시켜줌 } - val monthFormat = - DateTimeFormatter.ofPattern("yyyy.MM.dd").withLocale(Locale.forLanguageTag("ko")) - val localDate = LocalDateTime.now().format(monthFormat) - binding.textYearMonth.text = localDate + var week_day: Array = resources.getStringArray(R.array.calendar_day) + + calendarAdapter = CalendarAdapter(calendarList) + + calendarList.apply { + val dateFormat = + DateTimeFormatter.ofPattern("dd").withLocale(Locale.forLanguageTag("ko")) + val monthFormat = DateTimeFormatter.ofPattern("yyyy . MM . dd") + .withLocale(Locale.forLanguageTag("ko")) + + val localDate = LocalDateTime.now().format(monthFormat) + + val preSunday: LocalDateTime = LocalDateTime.now().with( + TemporalAdjusters.previous( + DayOfWeek.SUNDAY + ) + ) + Log.d("preSunday", preSunday.toString()) + for (i in 0..6) { + Log.d("날짜만", week_day[i]) + + calendarList.apply { + add( + CalendarData( + preSunday.plusDays(i.toLong()).format(dateFormat), + week_day[i] + ) + ) + } + Log.d("저번 주 일요일 기준으로 시작!", preSunday.plusDays(i.toLong()).format(dateFormat)) + } + binding.weekRecycler.adapter = calendarAdapter + binding.weekRecycler.layoutManager = GridLayoutManager(this@MainActivity, 7) + + } + + //RecyclerView에 목록 출력 + val recyclerView = binding.weekRecycler + + val adapter = calendarAdapter + + adapter.setOnItemClickListener(object : OnItemClickListener { + override fun onItemClick(v: View?, data: CalendarData) { + + val returnViewHolderList = calendarAdapter.returnViewHolderList() + lateinit var holderSelect : CalendarAdapter.CalendarViewHolder + lateinit var selected : String + + for(holder in returnViewHolderList){ + holder.binding.weekCardview.setBackgroundResource(R.drawable.ic_selector_background_white) + holder.binding.day.isSelected = false + holder.binding.date.isSelected = false + if(holder.today.equals(data.cl_date)) { + holderSelect = holder + selected = holder.today + } + } + holderSelect.binding.day.isSelected = true + holderSelect.binding.date.isSelected = true + holderSelect.binding.weekCardview.setBackgroundResource(R.drawable.transparent_calendar_element) + + val viewModel = ViewModelProvider(this@MainActivity)[CalendarViewModel::class.java] + viewModel.setData(selected) + // viewModel에 값 넘어가서 메뉴 뜨는지 확인하는 코드 + //var senddate = "14" + //viewModel.setData(senddate) + + // 1) ViewPager2 참조 + val viewPager: ViewPager2 = binding.vpMain + val tabLayout: TabLayout = binding.tabLayout + + // 2) FragmentStateAdapter 생성 : Fragment 여러개를 ViewPager2에 연결해주는 역할 + val viewpagerFragmentAdapter = ViewPager2Adapter(this@MainActivity) + + viewpagerFragmentAdapter.setMenudate(selected) + + Log.d("todaydate", selected) + + // 3) ViewPager2의 adapter에 설정 + viewPager.adapter = viewpagerFragmentAdapter + viewPager.setCurrentItem(viewpagerFragmentAdapter.getDefaultFragmentPosition(), false) + + // ###### TabLayout과 ViewPager2를 연결 + // 1. 탭메뉴의 이름을 리스트로 생성해둔다. + val tabTitles = listOf("아침", "점심", "저녁") + + // 2. TabLayout과 ViewPager2를 연결하고, TabItem의 메뉴명을 설정한다. + TabLayoutMediator(tabLayout, + viewPager, + { tab, position -> tab.text = tabTitles[position] }).attach() + + + } + }) + + recyclerView.adapter = adapter + + /*binding.textYearMonth.text = localDate binding.textYearMonth.setOnClickListener { @@ -119,11 +207,11 @@ class MainActivity : AppCompatActivity() { val previousDate = currentDate.plusDays(1) val newDate = previousDate.format(DateTimeFormatter.ofPattern("yyyy.MM.dd")) binding.textYearMonth.text = newDate - } + }*/ } - override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + /*override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (requestCode == CALENDAR_REQUEST_CODE && resultCode == RESULT_OK) { val changedDate = data?.getStringExtra("changedate") @@ -133,7 +221,7 @@ class MainActivity : AppCompatActivity() { Log.d("changedate", selectedDate) } } - } + }*/ override fun onCreateOptionsMenu(menu: Menu?): Boolean { @@ -153,11 +241,6 @@ class MainActivity : AppCompatActivity() { } } - override fun onRestart() { //여기 문제 있음 - super.onRestart() - binding.textYearMonth.text = selectedDate - } - companion object { private const val CALENDAR_REQUEST_CODE = 1 } diff --git a/app/src/main/java/com/eatssu/android/ui/main/ViewPager2Adapter.kt b/app/src/main/java/com/eatssu/android/ui/main/ViewPager2Adapter.kt index 6af790ae..a2f1149f 100644 --- a/app/src/main/java/com/eatssu/android/ui/main/ViewPager2Adapter.kt +++ b/app/src/main/java/com/eatssu/android/ui/main/ViewPager2Adapter.kt @@ -1,5 +1,6 @@ package com.eatssu.android.ui.main +import android.util.Log import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentActivity import androidx.viewpager2.adapter.FragmentStateAdapter @@ -8,6 +9,7 @@ class ViewPager2Adapter(fragmentActivity: FragmentActivity) : FragmentStateAdapter(fragmentActivity) { // 1. ViewPager2에 연결할 Fragment 들을 생성 val fragmentList = listOf(BreakfastFragment(), LunchFragment(), DinnerFragment()) + lateinit var menuDate : String // 2. ViesPager2에서 노출시킬 Fragment 의 갯수 설정 override fun getItemCount(): Int { @@ -16,6 +18,9 @@ class ViewPager2Adapter(fragmentActivity: FragmentActivity) : // 3. ViewPager2의 각 페이지에서 노출할 Fragment 설정 override fun createFragment(position: Int): Fragment { + /*if(fragmentList[position] is LunchFragment) { + (fragmentList[position] as LunchFragment).setDate(menuDate) + }*/ return fragmentList[position] } @@ -25,4 +30,9 @@ class ViewPager2Adapter(fragmentActivity: FragmentActivity) : // 예를 들어, 첫 번째 Fragment를 디폴트로 설정하려면 0을 반환합니다. return 1 } + + fun setMenudate(date : String){ + this.menuDate = date + Log.d("vpdate", menuDate) + } } diff --git a/app/src/main/java/com/eatssu/android/ui/mypage/MyReviewAdapter.kt b/app/src/main/java/com/eatssu/android/ui/mypage/MyReviewAdapter.kt index 9e6bb9c6..a9b4d4b9 100644 --- a/app/src/main/java/com/eatssu/android/ui/mypage/MyReviewAdapter.kt +++ b/app/src/main/java/com/eatssu/android/ui/mypage/MyReviewAdapter.kt @@ -22,31 +22,10 @@ class MyReviewAdapter(private val dataList: List) : // binding.tvReviewItemId.text = dataList[position].writerId.toString() binding.tvReviewItemComment.text = dataList[position].content.toString() binding.tvReviewItemDate.text = dataList[position].writeDate.toString() - binding.rbReviewItemRate.rating=dataList[position].grade.toFloat() - val tagList = dataList[position].tagList - - val tagCount = tagList.size - -// 태그 초기화 - binding.tvReviewItemTag1.text = "" - binding.tvReviewItemTag2.text = "" - binding.tvReviewItemTag3.text = "" - - val tagTextViews = arrayOf( - binding.tvReviewItemTag1, - binding.tvReviewItemTag2, - binding.tvReviewItemTag3 - ) - - for (i in 0 until min(tagCount, tagTextViews.size)) { - tagTextViews[i].text = tagList[i] - } - - for (i in tagCount until tagTextViews.size) { - tagTextViews[i].visibility = View.GONE - } - - + binding.tvReviewMainGrade.text=dataList[position].mainGrade.toString() + binding.tvReviewTasteGrade.text=dataList[position].tasteGrade.toString() + binding.tvReviewAmountGrade.text=dataList[position].amountGrade.toString() + binding.tvReviewItemId.text=dataList[position].menuName.toString() } } diff --git a/app/src/main/java/com/eatssu/android/ui/mypage/MyReviewListActivity.kt b/app/src/main/java/com/eatssu/android/ui/mypage/MyReviewListActivity.kt index fe6b976f..40028b16 100644 --- a/app/src/main/java/com/eatssu/android/ui/mypage/MyReviewListActivity.kt +++ b/app/src/main/java/com/eatssu/android/ui/mypage/MyReviewListActivity.kt @@ -27,13 +27,12 @@ class MyReviewListActivity : AppCompatActivity() { binding = ActivityMyReviewListBinding.inflate(layoutInflater) setContentView(binding.root) -// binding.included.actionBar.text="리뷰" -// binding = ActivityReviewListBinding.inflate(layoutInflater, null, true) - //val inflater = LayoutInflater.from(this) - //inflater(binding.root, findViewById(R.id.frame_layout), true) + binding.btnReviewClose.setOnClickListener() { + onBackPressed(); + } - supportActionBar?.title = "리뷰" + supportActionBar?.title = "내가 쓴 리뷰" var MENU_ID:Int=intent.getIntExtra("menuId",-1) Log.d("post",MENU_ID.toString()) @@ -65,7 +64,6 @@ class MyReviewListActivity : AppCompatActivity() { // 정상적으로 통신이 성공된 경우 Log.d("post", "onResponse 성공: " + response.body().toString()); - val body = response.body() body?.let { setAdapter(it.dataList) @@ -73,7 +71,7 @@ class MyReviewListActivity : AppCompatActivity() { } else { // 통신이 실패한 경우(응답코드 3xx, 4xx 등) - Log.d("post", "onResponse 실패") + Log.d("post", "onResponse 실패 + ${response.code()}") } } diff --git a/app/src/main/java/com/eatssu/android/ui/review/ReportActivity.kt b/app/src/main/java/com/eatssu/android/ui/review/ReportActivity.kt index 8fbb6cec..6702a4c0 100644 --- a/app/src/main/java/com/eatssu/android/ui/review/ReportActivity.kt +++ b/app/src/main/java/com/eatssu/android/ui/review/ReportActivity.kt @@ -1,5 +1,6 @@ package com.eatssu.android.ui.review +import android.content.Intent import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import com.eatssu.android.databinding.ActivityReportBinding @@ -9,6 +10,7 @@ import com.eatssu.android.ui.BaseActivity abstract class ReportActivity : BaseActivity() { private lateinit var binding: ActivityReportBinding + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityReportBinding.inflate(layoutInflater) @@ -16,6 +18,24 @@ abstract class ReportActivity : BaseActivity() { setActionBarTitle("신고하기") setContentView(binding.root) + + binding.btnCloseReport.setOnClickListener() { + val intent = Intent(this, ReviewListActivity::class.java) // 인텐트를 생성해줌 + startActivity(intent) // 화면 전환을 시켜줌 + + } + + binding.radioGp.setOnCheckedChangeListener { group, checkedId -> + when(checkedId) { + //binding.radioBt1 -> + } + } + + binding.btnNextReview2.setOnClickListener() { + val intent = Intent(this, ReviewListActivity::class.java) // 인텐트를 생성해줌 + startActivity(intent) // 화면 전환을 시켜줌 + + } } abstract fun setActionBarTitle(s: String) diff --git a/app/src/main/java/com/eatssu/android/ui/review/WriteReview1Activity.kt b/app/src/main/java/com/eatssu/android/ui/review/WriteReview1Activity.kt index 374f01d5..04b49435 100644 --- a/app/src/main/java/com/eatssu/android/ui/review/WriteReview1Activity.kt +++ b/app/src/main/java/com/eatssu/android/ui/review/WriteReview1Activity.kt @@ -81,6 +81,7 @@ class WriteReview1Activity : AppCompatActivity() { // intent.putExtra("tag",selectedTags) intent.putExtra("selectedTags", ArrayList(selectedTags)) startActivity(intent) // 화면 전환을 시켜줌 + Log.d("menuId", MENU_ID.toString()); } } diff --git a/app/src/main/res/color/selector_calendar_colortext.xml b/app/src/main/res/color/selector_calendar_colortext.xml new file mode 100644 index 00000000..9cdb46c9 --- /dev/null +++ b/app/src/main/res/color/selector_calendar_colortext.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_close.png b/app/src/main/res/drawable/ic_close.png new file mode 100644 index 00000000..5e5a3b68 Binary files /dev/null and b/app/src/main/res/drawable/ic_close.png differ diff --git a/app/src/main/res/drawable/ic_selector_background_white.xml b/app/src/main/res/drawable/ic_selector_background_white.xml new file mode 100644 index 00000000..b2c3865d --- /dev/null +++ b/app/src/main/res/drawable/ic_selector_background_white.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_star.png b/app/src/main/res/drawable/ic_star.png new file mode 100644 index 00000000..d1d85078 Binary files /dev/null and b/app/src/main/res/drawable/ic_star.png differ diff --git a/app/src/main/res/drawable/selector_background_blue.xml b/app/src/main/res/drawable/selector_background_blue.xml index ff0eccd1..24d16059 100644 --- a/app/src/main/res/drawable/selector_background_blue.xml +++ b/app/src/main/res/drawable/selector_background_blue.xml @@ -1,12 +1,13 @@ - - + + - + - + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index c98c5b91..79b80e38 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -46,11 +46,11 @@ app:layout_constraintTop_toBottomOf="@id/tv_eat_ssu"> - - + --> + + + + + + @@ -97,7 +111,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintTop_toBottomOf="@id/week_calendar" /> + app:layout_constraintTop_toBottomOf="@id/rv_main_weekcalendar"/> + + + + + + + + + + tools:listitem="@layout/item_my_review" /> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_report.xml b/app/src/main/res/layout/activity_report.xml index 709a2197..59b8d03f 100644 --- a/app/src/main/res/layout/activity_report.xml +++ b/app/src/main/res/layout/activity_report.xml @@ -4,16 +4,44 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - android:padding="20dp" tools:context=".ui.review.ReportActivity"> + + + + + + + + + @@ -21,6 +49,7 @@ android:id="@+id/radio_gp" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:paddingLeft="20dp" app:layout_constraintTop_toBottomOf="@+id/tv_report" tools:ignore="MissingConstraints"> @@ -39,11 +68,11 @@ android:text="음란성, 욕설 등 부적절한 내용" /> + android:text="부적절한 홍보 또는 광고" /> + android:text="저작권 도용 의심 (사진 등)" /> + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_calendar.xml b/app/src/main/res/layout/fragment_calendar.xml index 807054fc..bea9ea10 100644 --- a/app/src/main/res/layout/fragment_calendar.xml +++ b/app/src/main/res/layout/fragment_calendar.xml @@ -8,7 +8,7 @@ tools:context=".ui.calendar.CalendarFragment"> - - + --> + android:overScrollMode="never"/> + \ No newline at end of file diff --git a/app/src/main/res/layout/item_calendar_list.xml b/app/src/main/res/layout/item_calendar_list.xml index b501b303..eaf2f077 100644 --- a/app/src/main/res/layout/item_calendar_list.xml +++ b/app/src/main/res/layout/item_calendar_list.xml @@ -2,29 +2,33 @@ + android:textAlignment="center" + android:gravity="center" + android:textColor="@color/selector_calendar_colortext"/> + android:textAlignment="center" + android:gravity="center" + android:textColor="@color/selector_calendar_colortext"/> \ No newline at end of file diff --git a/app/src/main/res/layout/item_my_review.xml b/app/src/main/res/layout/item_my_review.xml index 0b1ea3a4..c52a3a25 100644 --- a/app/src/main/res/layout/item_my_review.xml +++ b/app/src/main/res/layout/item_my_review.xml @@ -20,22 +20,107 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" + app:layout_constraintStart_toStartOf="@+id/tv_review_item_id" app:layout_constraintTop_toBottomOf="@+id/tv_review_item_id"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - @@ -46,15 +131,15 @@ android:layout_height="wrap_content" android:text="2023.03.03" android:layout_marginStart="5dp" - app:layout_constraintBottom_toBottomOf="@+id/ll_review_item_rate" - app:layout_constraintStart_toEndOf="@+id/ll_review_item_rate" - app:layout_constraintTop_toTopOf="@+id/ll_review_item_rate" /> + app:layout_constraintBottom_toTopOf="@+id/tv_review_item_delete" + app:layout_constraintEnd_toEndOf="@+id/tv_review_item_delete" + app:layout_constraintTop_toTopOf="@+id/tv_review_item_id"/> - + app:layout_constraintTop_toBottomOf="@+id/tv_review_item_comment" />--> \ No newline at end of file diff --git a/app/src/main/res/values/array.xml b/app/src/main/res/values/array.xml index 69bdf086..7c209939 100644 --- a/app/src/main/res/values/array.xml +++ b/app/src/main/res/values/array.xml @@ -2,12 +2,12 @@ + - \ No newline at end of file