-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: 약속 상세 화면 기능 개발 #961
base: develop
Are you sure you want to change the base?
feat: 약속 상세 화면 기능 개발 #961
Conversation
return ApiResult.Success( | ||
Meeting( | ||
id = 1, | ||
name = "약속 이름", | ||
date = LocalDate.of(2025, 2, 1), | ||
time = LocalTime.of(11, 30), | ||
destinationAddress = "서울특별시 강남구 테헤란로 411 (성담빌딩)", | ||
departureAddress = "서울특별시 송파구 올림픽로 35다길 (한국루터회관)", | ||
departureTime = LocalTime.of(10, 0), | ||
routeTime = 70, | ||
mates = listOf(Mate("올리브1", ""), Mate("올리브2", "")), | ||
inviteCode = "12345", | ||
), | ||
) | ||
// return service.fetchMeeting(meetingId).map { it.toMeeting() } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
DefaultMeetingRepository에서 임시 데이터 넣어두었어요 api merge되면 위 코드 삭제하고 아래 주석 추가할게요!
override fun toggleDepartureTimeGuide(point: Point) { | ||
val inflater = parentActivity.getSystemService(LAYOUT_INFLATER_SERVICE) as LayoutInflater | ||
val parentViewGroup = parentActivity.findViewById<ViewGroup>(android.R.id.content) | ||
val binding = LayoutDepartureTimeTooltipBinding.inflate(inflater, parentViewGroup, false) | ||
val popupView = binding.root | ||
|
||
popupView.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED) | ||
|
||
val adjustedPoint = calculateDepartureTimeGuidePoint(popupView, point) | ||
showPopup(adjustedPoint, popupView, parentActivity.window.decorView) | ||
} | ||
|
||
private fun calculateDepartureTimeGuidePoint( | ||
popupView: View, | ||
guideButtonPoint: Point, | ||
): Point { | ||
val popupHeight = popupView.measuredHeight | ||
|
||
val guideButtonWidthPixel = GUIDE_BUTTON_WIDTH.toPixel(binding.root.context) | ||
val guideButtonPaddingPixel = GUIDE_BUTTON_PADDING.toPixel(binding.root.context) | ||
val adjustedX = guideButtonPoint.x + guideButtonWidthPixel + guideButtonPaddingPixel | ||
val adjustedY = guideButtonPoint.y - popupHeight + guideButtonPaddingPixel | ||
|
||
return Point(adjustedX, adjustedY) | ||
} | ||
|
||
private fun showPopup( | ||
point: Point, | ||
popupView: View, | ||
decorView: View, | ||
) { | ||
val popupWindow = | ||
PopupWindow( | ||
popupView, | ||
ViewGroup.LayoutParams.WRAP_CONTENT, | ||
ViewGroup.LayoutParams.WRAP_CONTENT, | ||
true, | ||
) | ||
popupWindow.showAtLocation( | ||
decorView, | ||
Gravity.NO_GRAVITY, | ||
point.x, | ||
point.y, | ||
) | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이 부분이 i
버튼 누르면 tooltip 띄우는 코드입니다
eta 화면에서 ?
버튼 누르면 tooltip 띄우는 코드랑 겹치는 부분이 있어서, 추후 이슈 파서 리팩터링 해볼게요
+ tooltip
, guide
, popup
네이밍이 혼용되고 있는데 이것도 동일한 이슈에서 해결할게요
fun isEtaAccessible(): Boolean { | ||
val formatter = DateTimeFormatter.ofPattern(DATE_TIME_PATTERN) | ||
val localDateTime = LocalDateTime.parse(dateTime, formatter) | ||
return localDateTime.minusMinutes(ETA_ACCESSIBLE_MINUTE) <= LocalDateTime.now() | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
30분 전인 경우에만 eta 화면에 들어갈 수 있도록 "eta 화면에 들어갈 수 있는지 여부"를 나타내는 코드입니다
원래는 isEtaAccessible
이 프로퍼티로 선언되었는데, 사용자가 버튼을 누를 시점에 동적으로 판단해야 할 것 같아서 함수로 분리했습니다
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
늦어서 죄송합니다! 궁금한 점만 있어서 approve 하겠습니다!
|
||
fun Int.toPixel(context: Context): Int { | ||
val density = context.resources.displayMetrics.density | ||
return (this * density).toInt() | ||
} | ||
|
||
fun View.getPointOnScreen(): Point { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
apply 쓴 이유가 궁금해요! Point(location[0], location[1]) 이렇게 사용하면 안되나요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
참고한 코드에서 저렇게 작성했길래 당연히 Point의 생성자로 x, y를 받을 수 없다고 생각했어요 (ㅜㅜ)
그런데 해음이 말한 방법으로도 가능하네요!
수정했습니다 감사해요! e7d3b50
🚩 연관 이슈
close #958
📝 작업 내용
🏞️ 스크린샷 (선택)
Screen_Recording_20250120_154215.mp4
아직 v2 api merge가 안되어서 임시 데이터 넣어두었어요
🗣️ 리뷰 요구사항 (선택)
변경사항 너무 많을 것 같아서 ui/기능 이슈 쪼갠 건데도 여전히 많네요...
이해 안 되는 부분들 코멘트 주세요~!!