Skip to content

feat: 문제 탭 하단 타이머 바 + 상태바 남은 시간 표시 (#16)#17

Merged
dj258255 merged 2 commits into
mainfrom
feat/timer-visibility
Jul 6, 2026
Merged

feat: 문제 탭 하단 타이머 바 + 상태바 남은 시간 표시 (#16)#17
dj258255 merged 2 commits into
mainfrom
feat/timer-visibility

Conversation

@dj258255

@dj258255 dj258255 commented Jul 6, 2026

Copy link
Copy Markdown
Owner

Fixes #16

문제

타이머가 타이머 탭 안에만 있어서 문제 탭으로 전환하면 남은 시간을 볼 수 없음.

변경 사항

TimerService 신설 (프로젝트 서비스)

카운트다운 상태(남은 시간·총 시간·실행 여부)가 CountdownPanel의 private 필드에 갇혀 있어 다른 UI가 관찰할 수 없었음. 기존 CodingTestKitActionService + 상태바 구독 패턴을 따라 서비스로 추출하고 리스너 허브 역할을 부여.

세 UI가 같은 타이머 공유

  1. 타이머 탭 — 기존 UI 유지, 상태만 서비스에 위임. 버튼 라벨(시작/재개)·입력 필드 활성화를 별도 플래그 없이 서비스 상태에서 유도해, 어느 화면에서 조작해도 일관되게 동기화
  2. 문제 탭 하단 타이머 바 — 남은 시간 라벨 + 시작/일시정지·초기화 버튼이 있는 얇은 바. 문제를 보면서 시간 확인·조작 가능. 1분 미만이면 빨간색 표시(타이머 탭과 동일한 규칙)
  3. 상태바 위젯 — 기존 CTK: 플랫폼 #번호 옆에 ⏱ 27:31 형태로 남은 시간 표시. 초기 상태에서는 숨기고, 실행 중이거나 중간에 멈춘/종료된 타이머만 표시

성능

타이머 틱이 33ms 간격(원형 타이머 애니메이션용)이므로, 문제 탭 바와 상태바는 표시 문자열이 바뀔 때만 갱신.

동작 보존

  • 스톱워치 탭은 변경 없음
  • 시간 종료 시 알림음 + 다이얼로그, 1분 미만 빨간색, 일시정지 시 필드 잠금 유지 등 기존 카운트다운 동작 그대로

테스트

  • ./gradlew compileKotlin test 통과
  • UI 동작은 로컬 runIde에서 세 UI 간 상호 동기화 확인 필요

dj258255 added 2 commits July 6, 2026 23:26
카운트다운 상태를 CountdownPanel private 필드에서 TimerService(프로젝트
서비스)로 추출하고 세 UI가 공유:

- 타이머 탭: 기존 UI 유지, 상태는 서비스에 위임. 버튼 라벨(시작/재개)·
  필드 활성화를 서비스 상태에서 유도해 어디서 조작해도 일관되게 동기화
- 문제 탭 하단 타이머 바: 남은 시간 + 시작/일시정지·초기화 버튼.
  문제를 보면서 시간 확인 가능
- 상태바 위젯: CTK 텍스트 옆에 남은 시간 표시. 초기 상태에서는 숨기고
  실행 중이거나 중간에 멈춘/종료된 타이머만 표시

타이머는 33ms 간격으로 틱하므로 문제 탭 바와 상태바는 표시 문자열이
바뀔 때만 갱신하여 불필요한 리페인트 방지.
- 스톱워치 상태(경과 시간·실행 여부)도 TimerService로 추출하고
  StopwatchPanel은 표시·랩 기록만 담당하도록 변경
- 문제 탭 하단 바를 왼쪽 타이머 그룹 + 오른쪽 스톱워치 그룹으로 확장,
  각각 시작/일시정지·초기화 버튼 제공
- 바 상단에 남은 시간 비율을 보여주는 3px 프로그레스 바 추가
  (int 0~1000 단위라 같은 값이면 setValue가 no-op이므로 별도 스로틀 불필요)
@dj258255 dj258255 merged commit 72e9d55 into main Jul 6, 2026
1 of 2 checks passed
@dj258255 dj258255 deleted the feat/timer-visibility branch July 6, 2026 15:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

문제를 보면서 타이머를 확인할 수 없음 — 문제 탭 하단 타이머 바 + 상태바 표시

1 participant