Browse Source

Compose TV: create a DefaultTvActivity

merge-requests/2332/head
Nicolas Pomepuy 9 months ago
parent
commit
28773f9a95
  1. 61
      application/television/src/main/java/org/videolan/television/ui/DefaultTvActivity.kt
  2. 29
      application/television/src/main/java/org/videolan/television/ui/MainActivity.kt

61
application/television/src/main/java/org/videolan/television/ui/DefaultTvActivity.kt

@ -0,0 +1,61 @@
/*
* ************************************************************************
* DefaultTvActivity.kt
* *************************************************************************
* Copyright © 2025 VLC authors and VideoLAN
* Author: Nicolas POMEPUY
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
* **************************************************************************
*
*
*/
package org.videolan.television.ui
import android.os.Bundle
import android.os.PersistableBundle
import android.view.KeyEvent
import androidx.appcompat.app.AppCompatActivity
import org.videolan.television.util.EventThrottler
open class DefaultTvActivity : AppCompatActivity() {
private val horizontalThrottler = EventThrottler(75L)
private val verticalThrottler = EventThrottler(100L)
private val selectThrottler = EventThrottler(500L)
override fun dispatchKeyEvent(event: KeyEvent): Boolean {
if (event.action != KeyEvent.ACTION_DOWN) return super.dispatchKeyEvent(event)
val isThrottled = when (event.keyCode) {
KeyEvent.KEYCODE_DPAD_LEFT,
KeyEvent.KEYCODE_DPAD_RIGHT -> {
horizontalThrottler.throttleEvent()
}
KeyEvent.KEYCODE_DPAD_UP,
KeyEvent.KEYCODE_DPAD_DOWN -> {
verticalThrottler.throttleEvent()
}
KeyEvent.KEYCODE_DPAD_CENTER -> {
selectThrottler.throttleEvent()
}
else -> false
}
return isThrottled || super.dispatchKeyEvent(event)
}
}

29
application/television/src/main/java/org/videolan/television/ui/MainActivity.kt

@ -45,11 +45,7 @@ import org.videolan.vlc.gui.dialogs.UpdateDialog
import org.videolan.vlc.util.AutoUpdate
class MainActivity : AppCompatActivity() {
private val horizontalThrottler = EventThrottler(75L)
private val verticalThrottler = EventThrottler(100L)
private val selectThrottler = EventThrottler(500L)
class MainActivity : DefaultTvActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@ -74,27 +70,4 @@ class MainActivity : AppCompatActivity() {
}
}
override fun dispatchKeyEvent(event: KeyEvent): Boolean {
if (event.action != KeyEvent.ACTION_DOWN) return super.dispatchKeyEvent(event)
val isThrottled = when (event.keyCode) {
KeyEvent.KEYCODE_DPAD_LEFT,
KeyEvent.KEYCODE_DPAD_RIGHT -> {
horizontalThrottler.throttleEvent()
}
KeyEvent.KEYCODE_DPAD_UP,
KeyEvent.KEYCODE_DPAD_DOWN -> {
verticalThrottler.throttleEvent()
}
KeyEvent.KEYCODE_DPAD_CENTER -> {
selectThrottler.throttleEvent()
}
else -> false
}
return isThrottled || super.dispatchKeyEvent(event)
}
}

Loading…
Cancel
Save