Skip to content

Commit c379344

Browse files
committed
feat(seek): add secondary subs seeking keybindings [Fixes #104]
1 parent 53ae804 commit c379344

File tree

4 files changed

+63
-17
lines changed

4 files changed

+63
-17
lines changed

FlyleafLib/MediaPlayer/Player.Keys.cs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -488,6 +488,17 @@ public Action GetKeyBindingAction(KeyBindingAction action)
488488
case KeyBindingAction.SubsPrevSeekFallback:
489489
return player.Subtitles.PrevSeekFallback;
490490

491+
case KeyBindingAction.SubsCurSeek2:
492+
return player.Subtitles.CurSeek2;
493+
case KeyBindingAction.SubsPrevSeek2:
494+
return player.Subtitles.PrevSeek2;
495+
case KeyBindingAction.SubsNextSeek2:
496+
return player.Subtitles.NextSeek2;
497+
case KeyBindingAction.SubsNextSeekFallback2:
498+
return player.Subtitles.NextSeekFallback2;
499+
case KeyBindingAction.SubsPrevSeekFallback2:
500+
return player.Subtitles.PrevSeekFallback2;
501+
491502
case KeyBindingAction.SpeedAdd:
492503
return player.SpeedUp;
493504

@@ -720,6 +731,7 @@ public enum KeyBindingAction
720731
SeekForward4,
721732
[Description("Seek backwards (4)")]
722733
SeekBackward4,
734+
723735
[Description("Seek to the previous subtitle")]
724736
SubsPrevSeek,
725737
[Description("Seek to the current subtitle")]
@@ -731,6 +743,17 @@ public enum KeyBindingAction
731743
[Description("Seek to the next subtitle or seek forwards")]
732744
SubsNextSeekFallback,
733745

746+
[Description("Seek to the previous secondary subtitle")]
747+
SubsPrevSeek2,
748+
[Description("Seek to the current secondary subtitle")]
749+
SubsCurSeek2,
750+
[Description("Seek to the next secondary subtitle")]
751+
SubsNextSeek2,
752+
[Description("Seek to the previous secondary subtitle or seek backwards")]
753+
SubsPrevSeekFallback2,
754+
[Description("Seek to the next secondary subtitle or seek forwards")]
755+
SubsNextSeekFallback2,
756+
734757
[Description("Speed Up (1)")]
735758
SpeedAdd,
736759
[Description("Speed Up (2)")]

FlyleafLib/MediaPlayer/Subtitles.cs

Lines changed: 33 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -779,60 +779,77 @@ public void ToggleVisibilitySecondary()
779779
Config.Subtitles[1].Visible = !Config.Subtitles[1].Visible;
780780
}
781781

782-
private bool _prevSeek()
782+
private bool _prevSeek(int subIndex)
783783
{
784-
var prev = _player.SubtitlesManager[0].GetPrev();
784+
var prev = _player.SubtitlesManager[subIndex].GetPrev();
785785
if (prev is not null)
786786
{
787-
_player.SeekAccurate(prev.StartTime, 0);
787+
_player.SeekAccurate(prev.StartTime, subIndex);
788788
return true;
789789
}
790790

791791
return false;
792792
}
793793

794-
public void PrevSeek() => _prevSeek();
794+
public void PrevSeek() => _prevSeek(0);
795+
public void PrevSeek2() => _prevSeek(1);
795796

796797
public void PrevSeekFallback()
797798
{
798-
bool seeked = _prevSeek();
799-
if (!seeked)
799+
if (!_prevSeek(0))
800+
{
801+
_player.SeekBackward2();
802+
}
803+
}
804+
public void PrevSeekFallback2()
805+
{
806+
if (!_prevSeek(1))
800807
{
801808
_player.SeekBackward2();
802809
}
803810
}
804811

805-
public void CurSeek()
812+
private void _curSeek(int subIndex)
806813
{
807-
var cur = _player.SubtitlesManager[0].GetCurrent();
814+
var cur = _player.SubtitlesManager[subIndex].GetCurrent();
808815
if (cur is not null)
809816
{
810-
_player.SeekAccurate(cur.StartTime, 0);
817+
_player.SeekAccurate(cur.StartTime, subIndex);
811818
}
812819
else
813820
{
814821
// fallback to prevSeek (same as mpv)
815-
PrevSeek();
822+
_prevSeek(subIndex);
816823
}
817824
}
818825

819-
private bool _nextSeek()
826+
public void CurSeek() => _curSeek(0);
827+
public void CurSeek2() => _curSeek(1);
828+
829+
private bool _nextSeek(int subIndex)
820830
{
821-
var next = _player.SubtitlesManager[0].GetNext();
831+
var next = _player.SubtitlesManager[subIndex].GetNext();
822832
if (next is not null)
823833
{
824-
_player.SeekAccurate(next.StartTime, 0);
834+
_player.SeekAccurate(next.StartTime, subIndex);
825835
return true;
826836
}
827837
return false;
828838
}
829839

830-
public void NextSeek() => _nextSeek();
840+
public void NextSeek() => _nextSeek(0);
841+
public void NextSeek2() => _nextSeek(1);
831842

832843
public void NextSeekFallback()
833844
{
834-
bool seeked = _nextSeek();
835-
if (!seeked)
845+
if (!_nextSeek(0))
846+
{
847+
_player.SeekForward2();
848+
}
849+
}
850+
public void NextSeekFallback2()
851+
{
852+
if (!_nextSeek(1))
836853
{
837854
_player.SeekForward2();
838855
}

LLPlayer/Services/AppActions.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -894,7 +894,13 @@ public static KeyBindingActionGroup ToGroup(this KeyBindingAction action)
894894
case KeyBindingAction.SubsNextSeek:
895895
case KeyBindingAction.SubsPrevSeekFallback:
896896
case KeyBindingAction.SubsNextSeekFallback:
897+
case KeyBindingAction.SubsPrevSeek2:
898+
case KeyBindingAction.SubsCurSeek2:
899+
case KeyBindingAction.SubsNextSeek2:
900+
case KeyBindingAction.SubsPrevSeekFallback2:
901+
case KeyBindingAction.SubsNextSeekFallback2:
897902
return KeyBindingActionGroup.Subtitles;
903+
898904
case KeyBindingAction.ShowNextFrame:
899905
case KeyBindingAction.ShowPrevFrame:
900906
case KeyBindingAction.SpeedAdd:

LLPlayer/Views/SettingsDialog.xaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
<TreeViewItem Tag="SettingsAudio">
5353
<TreeViewItem.Header>
5454
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
55-
<materialDesign:PackIcon Kind="Headphones" Width="24" Height="24" Margin="0 0 8 0" />
55+
<materialDesign:PackIcon Kind="MusicBox" Width="24" Height="24" Margin="0 0 8 0" />
5656
<TextBlock Text="Audio" VerticalAlignment="Center" />
5757
</StackPanel>
5858
</TreeViewItem.Header>

0 commit comments

Comments
 (0)