Skip to content

Commit 19629cf

Browse files
committed
Add default timeline and heatmap visibility settings
1 parent 18d37d9 commit 19629cf

File tree

8 files changed

+55
-3
lines changed

8 files changed

+55
-3
lines changed

src/App.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,8 @@ export default function App() {
230230
onSeek={handleSeek}
231231
mediaRef={mediaRef}
232232
handyInfo={handyConnected ? { connected: true, ping: handyService.ping, uploadStatus: handyUploadStatus } : { connected: false, ping: null, uploadStatus: 'idle' as const }}
233+
defaultShowHeatmap={settings.showHeatmapByDefault}
234+
defaultShowTimeline={settings.showTimelineByDefault}
233235
timelineHeight={settings.timelineHeight}
234236
timelineWindow={settings.timelineWindow}
235237
speedColors={settings.speedColors}

src/components/Settings.tsx

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,30 @@ function TimelineSection({
243243
onChange={(v) => update('speedColors', v)}
244244
/>
245245
</FieldRow>
246+
247+
<Divider />
248+
249+
<FieldRow
250+
label={t('settings.defaultShowTimeline')}
251+
description={t('settings.defaultShowTimelineDesc')}
252+
>
253+
<Toggle
254+
checked={settings.showTimelineByDefault}
255+
onChange={(v) => update('showTimelineByDefault', v)}
256+
/>
257+
</FieldRow>
258+
259+
<Divider />
260+
261+
<FieldRow
262+
label={t('settings.defaultShowHeatmap')}
263+
description={t('settings.defaultShowHeatmapDesc')}
264+
>
265+
<Toggle
266+
checked={settings.showHeatmapByDefault}
267+
onChange={(v) => update('showHeatmapByDefault', v)}
268+
/>
269+
</FieldRow>
246270
</div>
247271
)
248272
}

src/components/VideoPlayer.tsx

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ interface VideoPlayerProps {
4040
onSeek: (time: number) => void
4141
mediaRef: React.MutableRefObject<HTMLMediaElement | null>
4242
handyInfo?: HandyOverlayInfo | null
43+
defaultShowHeatmap?: boolean
44+
defaultShowTimeline?: boolean
4345
timelineHeight?: number
4446
timelineWindow?: number
4547
speedColors?: boolean
@@ -57,6 +59,8 @@ export default function VideoPlayer({
5759
onSeek,
5860
mediaRef,
5961
handyInfo,
62+
defaultShowHeatmap = false,
63+
defaultShowTimeline = false,
6064
timelineHeight = 64,
6165
timelineWindow = 10,
6266
speedColors = true,
@@ -65,8 +69,8 @@ export default function VideoPlayer({
6569
const containerRef = useRef<HTMLDivElement>(null)
6670
const [playing, setPlaying] = useState(false)
6771
const [showHandyOverlay, setShowHandyOverlay] = useState(false)
68-
const [showHeatmap, setShowHeatmap] = useState(false)
69-
const [showTimeline, setShowTimeline] = useState(true)
72+
const [showHeatmap, setShowHeatmap] = useState(defaultShowHeatmap)
73+
const [showTimeline, setShowTimeline] = useState(defaultShowTimeline)
7074
const handyOverlayTimer = useRef<ReturnType<typeof setTimeout> | null>(null)
7175
const [currentTime, setCurrentTime] = useState(0)
7276
const [duration, setDuration] = useState(0)
@@ -230,7 +234,9 @@ export default function VideoPlayer({
230234
setDuration(0)
231235
setPlaying(false)
232236
setShowControls(true)
233-
}, [videoUrl])
237+
setShowHeatmap(defaultShowHeatmap)
238+
setShowTimeline(defaultShowTimeline)
239+
}, [videoUrl, defaultShowHeatmap, defaultShowTimeline])
234240

235241
return (
236242
<div

src/i18n/locales/en.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,10 @@ const en: Record<string, string> = {
8383
'settings.rememberVolumeDesc': 'Persist volume level between sessions',
8484
'settings.rememberPositionDesc': 'Resume videos from where you left off',
8585
'settings.scriptColorsDesc': 'Color funscript strokes by speed intensity',
86+
'settings.defaultShowTimeline': 'Show timeline by default',
87+
'settings.defaultShowTimelineDesc': 'Turn the timeline on automatically when media with a script is opened',
88+
'settings.defaultShowHeatmap': 'Show heatmap by default',
89+
'settings.defaultShowHeatmapDesc': 'Turn the heatmap on automatically when media with a script is opened',
8690
'settings.visibleWindow': 'Visible Window',
8791
'settings.strokeRangeMin': 'Stroke Range Min',
8892
'settings.strokeRangeMax': 'Stroke Range Max',

src/i18n/locales/ja.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,10 @@ const ja: Record<string, string> = {
8282
'settings.rememberVolumeDesc': '\u30BB\u30C3\u30B7\u30E7\u30F3\u9593\u3067\u97F3\u91CF\u30EC\u30D9\u30EB\u3092\u4FDD\u6301\u3057\u307E\u3059',
8383
'settings.rememberPositionDesc': '\u4E2D\u65AD\u3057\u305F\u4F4D\u7F6E\u304B\u3089\u52D5\u753B\u3092\u518D\u958B\u3057\u307E\u3059',
8484
'settings.scriptColorsDesc': '\u901F\u5EA6\u5F37\u5EA6\u306B\u3088\u308A\u30D5\u30A1\u30F3\u30B9\u30AF\u30EA\u30D7\u30C8\u306E\u30B9\u30C8\u30ED\u30FC\u30AF\u306B\u8272\u3092\u4ED8\u3051\u307E\u3059',
85+
'settings.defaultShowTimeline': '\u30BF\u30A4\u30E0\u30E9\u30A4\u30F3\u3092\u521D\u671F\u8868\u793A',
86+
'settings.defaultShowTimelineDesc': '\u30B9\u30AF\u30EA\u30D7\u30C8\u4ED8\u304D\u30E1\u30C7\u30A3\u30A2\u3092\u958B\u3044\u305F\u3068\u304D\u306B\u30BF\u30A4\u30E0\u30E9\u30A4\u30F3\u3092\u81EA\u52D5\u3067\u8868\u793A\u3057\u307E\u3059',
87+
'settings.defaultShowHeatmap': '\u30D2\u30FC\u30C8\u30DE\u30C3\u30D7\u3092\u521D\u671F\u8868\u793A',
88+
'settings.defaultShowHeatmapDesc': '\u30B9\u30AF\u30EA\u30D7\u30C8\u4ED8\u304D\u30E1\u30C7\u30A3\u30A2\u3092\u958B\u3044\u305F\u3068\u304D\u306B\u30D2\u30FC\u30C8\u30DE\u30C3\u30D7\u3092\u81EA\u52D5\u3067\u8868\u793A\u3057\u307E\u3059',
8589
'settings.visibleWindow': '\u8868\u793A\u30A6\u30A3\u30F3\u30C9\u30A6',
8690
'settings.strokeRangeMin': '\u30B9\u30C8\u30ED\u30FC\u30AF\u7BC4\u56F2 \u6700\u5C0F',
8791
'settings.strokeRangeMax': '\u30B9\u30C8\u30ED\u30FC\u30AF\u7BC4\u56F2 \u6700\u5927',

src/i18n/locales/ko.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,10 @@ const ko: Record<string, string> = {
8282
'settings.rememberVolumeDesc': '\uC138\uC158 \uAC04 \uBCFC\uB968 \uB808\uBCA8\uC744 \uC720\uC9C0\uD569\uB2C8\uB2E4',
8383
'settings.rememberPositionDesc': '\uC911\uB2E8\uD55C \uC704\uCE58\uC5D0\uC11C \uB3D9\uC601\uC0C1\uC744 \uC7AC\uAC1C\uD569\uB2C8\uB2E4',
8484
'settings.scriptColorsDesc': '\uC18D\uB3C4 \uAC15\uB3C4\uC5D0 \uB530\uB77C \uD3B8\uC2A4\uD06C\uB9BD\uD2B8 \uC2A4\uD2B8\uB85C\uD06C\uC5D0 \uC0C9\uC0C1\uC744 \uC801\uC6A9\uD569\uB2C8\uB2E4',
85+
'settings.defaultShowTimeline': '\uD0C0\uC784\uB77C\uC778 \uAE30\uBCF8 \uD45C\uC2DC',
86+
'settings.defaultShowTimelineDesc': '\uC2A4\uD06C\uB9BD\uD2B8\uAC00 \uC788\uB294 \uBBF8\uB514\uC5B4\uB97C \uC5F4 \uB54C \uD0C0\uC784\uB77C\uC778\uC744 \uC790\uB3D9\uC73C\uB85C \uCF2D\uB2C8\uB2E4',
87+
'settings.defaultShowHeatmap': '\uD788\uD2B8\uB9F5 \uAE30\uBCF8 \uD45C\uC2DC',
88+
'settings.defaultShowHeatmapDesc': '\uC2A4\uD06C\uB9BD\uD2B8\uAC00 \uC788\uB294 \uBBF8\uB514\uC5B4\uB97C \uC5F4 \uB54C \uD788\uD2B8\uB9F5\uC744 \uC790\uB3D9\uC73C\uB85C \uCF2D\uB2C8\uB2E4',
8589
'settings.visibleWindow': '\uD45C\uC2DC \uCC3D',
8690
'settings.strokeRangeMin': '\uC2A4\uD2B8\uB85C\uD06C \uBC94\uC704 \uCD5C\uC18C',
8791
'settings.strokeRangeMax': '\uC2A4\uD2B8\uB85C\uD06C \uBC94\uC704 \uCD5C\uB300',

src/i18n/locales/zh.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,10 @@ const zh: Record<string, string> = {
8282
'settings.rememberVolumeDesc': '\u5728\u4F1A\u8BDD\u4E4B\u95F4\u4FDD\u6301\u97F3\u91CF\u7EA7\u522B',
8383
'settings.rememberPositionDesc': '\u4ECE\u4E0A\u6B21\u505C\u6B62\u7684\u4F4D\u7F6E\u7EE7\u7EED\u64AD\u653E\u89C6\u9891',
8484
'settings.scriptColorsDesc': '\u6839\u636E\u901F\u5EA6\u5F3A\u5EA6\u4E3A\u8D85\u7EA7\u811A\u672C\u7B14\u89E6\u7740\u8272',
85+
'settings.defaultShowTimeline': '\u9ED8\u8BA4\u663E\u793A\u65F6\u95F4\u7EBF',
86+
'settings.defaultShowTimelineDesc': '\u6253\u5F00\u5E26\u811A\u672C\u7684\u5A92\u4F53\u65F6\u81EA\u52A8\u663E\u793A\u65F6\u95F4\u7EBF',
87+
'settings.defaultShowHeatmap': '\u9ED8\u8BA4\u663E\u793A\u70ED\u529B\u56FE',
88+
'settings.defaultShowHeatmapDesc': '\u6253\u5F00\u5E26\u811A\u672C\u7684\u5A92\u4F53\u65F6\u81EA\u52A8\u663E\u793A\u70ED\u529B\u56FE',
8589
'settings.visibleWindow': '\u53EF\u89C1\u7A97\u53E3',
8690
'settings.strokeRangeMin': '\u884C\u7A0B\u8303\u56F4 \u6700\u5C0F',
8791
'settings.strokeRangeMax': '\u884C\u7A0B\u8303\u56F4 \u6700\u5927',

src/services/settings.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ export interface AppSettings {
88
theme: 'dark' // only dark for now
99

1010
// Timeline
11+
showHeatmapByDefault: boolean
12+
showTimelineByDefault: boolean
1113
timelineHeight: number // px, 40-120
1214
timelineWindow: number // seconds, 5-30
1315
speedColors: boolean
@@ -23,6 +25,8 @@ export const defaultSettings: AppSettings = {
2325
defaultVideoFolder: '',
2426
scriptFolder: '',
2527
theme: 'dark',
28+
showHeatmapByDefault: false,
29+
showTimelineByDefault: false,
2630
timelineHeight: 64,
2731
timelineWindow: 10,
2832
speedColors: true,

0 commit comments

Comments
 (0)