Skip to content

Commit 68cbd23

Browse files
Refactor to abstract the "page keys" outside of the livetv context. This SEEMS like the best fit for this and allows for one place for usage outside of the livetv context.
1 parent 86df3a3 commit 68cbd23

File tree

4 files changed

+21
-13
lines changed

4 files changed

+21
-13
lines changed

app/src/main/java/org/jellyfin/androidtv/ui/livetv/LiveTvGuideFragment.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
import org.jellyfin.androidtv.ui.playback.PlaybackLauncher;
4343
import org.jellyfin.androidtv.util.CoroutineUtils;
4444
import org.jellyfin.androidtv.util.DateTimeExtensionsKt;
45+
import org.jellyfin.androidtv.util.KeyEventExtensionsKt;
4546
import org.jellyfin.androidtv.util.ImageHelper;
4647
import org.jellyfin.androidtv.util.InfoLayoutHelper;
4748
import org.jellyfin.androidtv.util.PlaybackHelper;
@@ -400,7 +401,7 @@ private boolean handleChannelPageKey(int keyCode) {
400401
}
401402
LiveTvGuideFragmentHelperKt.pageGuideChannels(
402403
requireActivity(), mProgramRows, mChannels, guideVisibleRows,
403-
LiveTvGuideFragmentHelperKt.isChannelPageForward(keyCode)
404+
KeyEventExtensionsKt.isPageForward(keyCode)
404405
);
405406
return true;
406407
}

app/src/main/java/org/jellyfin/androidtv/ui/livetv/LiveTvGuideFragmentHelper.kt

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package org.jellyfin.androidtv.ui.livetv
22

33
import android.app.Activity
44
import android.content.Context
5-
import android.view.KeyEvent
65
import android.view.View
76
import android.view.ViewGroup
87
import androidx.compose.runtime.collectAsState
@@ -96,14 +95,6 @@ fun pageGuideChannels(
9695
return true
9796
}
9897

99-
fun isChannelPageKey(keyCode: Int): Boolean = keyCode == KeyEvent.KEYCODE_MEDIA_FAST_FORWARD
100-
|| keyCode == KeyEvent.KEYCODE_MEDIA_REWIND
101-
|| keyCode == KeyEvent.KEYCODE_MEDIA_NEXT
102-
|| keyCode == KeyEvent.KEYCODE_MEDIA_PREVIOUS
103-
104-
fun isChannelPageForward(keyCode: Int): Boolean =
105-
keyCode == KeyEvent.KEYCODE_MEDIA_FAST_FORWARD || keyCode == KeyEvent.KEYCODE_MEDIA_NEXT
106-
10798
fun createNoProgramDataBaseItem(
10899
context: Context,
109100
channelId: UUID?,

app/src/main/java/org/jellyfin/androidtv/ui/playback/CustomPlaybackOverlayFragment.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
import org.jellyfin.androidtv.ui.livetv.LiveTvGuide;
5757
import org.jellyfin.androidtv.ui.livetv.LiveTvGuideFragment;
5858
import org.jellyfin.androidtv.ui.livetv.LiveTvGuideFragmentHelperKt;
59+
import org.jellyfin.androidtv.util.KeyEventExtensionsKt;
5960
import org.jellyfin.androidtv.ui.livetv.TvManager;
6061
import org.jellyfin.androidtv.ui.navigation.Destinations;
6162
import org.jellyfin.androidtv.ui.navigation.NavigationRepository;
@@ -421,7 +422,7 @@ else if (mSelectedProgramView instanceof GuideChannelHeader)
421422
event.startTracking();
422423
return true;
423424
}
424-
if (mGuideVisible && LiveTvGuideFragmentHelperKt.isChannelPageKey(keyCode)) {
425+
if (mGuideVisible && KeyEventExtensionsKt.isPageKey(keyCode)) {
425426
return true;
426427
}
427428
} else if (event.getAction() == KeyEvent.ACTION_UP) {
@@ -472,7 +473,7 @@ else if (mSelectedProgramView instanceof GuideChannelHeader)
472473

473474
private boolean handleGuideChannelPageKey(int keyCode) {
474475
if (!mGuideVisible) return false;
475-
if (!LiveTvGuideFragmentHelperKt.isChannelPageKey(keyCode)) return false;
476+
if (!KeyEventExtensionsKt.isPageKey(keyCode)) return false;
476477
if (mDetailPopup != null && mDetailPopup.isShowing()) {
477478
return true;
478479
}
@@ -486,7 +487,7 @@ private boolean handleGuideChannelPageKey(int keyCode) {
486487
}
487488
LiveTvGuideFragmentHelperKt.pageGuideChannels(
488489
requireActivity(), tvGuideBinding.programRows, tvGuideBinding.channels, guideVisibleRows,
489-
LiveTvGuideFragmentHelperKt.isChannelPageForward(keyCode)
490+
KeyEventExtensionsKt.isPageForward(keyCode)
490491
);
491492
return true;
492493
}

app/src/main/java/org/jellyfin/androidtv/util/KeyEventExtensions.kt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,3 +24,18 @@ fun KeyEvent.isMediaSessionKeyEvent(): Boolean = when {
2424
else -> false
2525
}
2626
}
27+
28+
/**
29+
* Returns whether the given key code is a page key (FF/RW/Next/Previous).
30+
* Used by grids and guides to page through items.
31+
*/
32+
fun isPageKey(keyCode: Int): Boolean = keyCode == KeyEvent.KEYCODE_MEDIA_FAST_FORWARD
33+
|| keyCode == KeyEvent.KEYCODE_MEDIA_REWIND
34+
|| keyCode == KeyEvent.KEYCODE_MEDIA_NEXT
35+
|| keyCode == KeyEvent.KEYCODE_MEDIA_PREVIOUS
36+
37+
/**
38+
* Returns whether the given page key code represents a forward direction.
39+
*/
40+
fun isPageForward(keyCode: Int): Boolean = keyCode == KeyEvent.KEYCODE_MEDIA_FAST_FORWARD
41+
|| keyCode == KeyEvent.KEYCODE_MEDIA_NEXT

0 commit comments

Comments
 (0)