summaryrefslogtreecommitdiff
path: root/main/src/ui/java
diff options
context:
space:
mode:
authorArne Schwabe <arne@rfc2549.org>2025-12-16 16:17:26 +0100
committerArne Schwabe <arne@rfc2549.org>2026-01-06 00:02:56 +0100
commitc354856f29fe219930aade007bb166c8e17d7464 (patch)
tree9bce430bac7199fe11a850800d51043a3dcb1e56 /main/src/ui/java
parent5cff44dae07556317b905452cc2cd735f82d1e1a (diff)
Enable Minimal UI in Android TV mode
closes #1861 Signed-off-by: Arne Schwabe <arne@rfc2549.org>
Diffstat (limited to 'main/src/ui/java')
-rw-r--r--main/src/ui/java/de/blinkt/openvpn/activities/MainActivity.kt5
-rw-r--r--main/src/ui/java/de/blinkt/openvpn/fragments/MinimalUI.kt18
-rw-r--r--main/src/ui/java/de/blinkt/openvpn/fragments/VPNProfileList.kt6
3 files changed, 23 insertions, 6 deletions
diff --git a/main/src/ui/java/de/blinkt/openvpn/activities/MainActivity.kt b/main/src/ui/java/de/blinkt/openvpn/activities/MainActivity.kt
index 8b18144a..d830278e 100644
--- a/main/src/ui/java/de/blinkt/openvpn/activities/MainActivity.kt
+++ b/main/src/ui/java/de/blinkt/openvpn/activities/MainActivity.kt
@@ -38,9 +38,10 @@ class MainActivity : BaseActivity() {
disableToolbarElevation()
val minimalUi = GlobalPreferences.getMinimalUi();
- if (minimalUi ) {
+ if (isAndroidTV || minimalUi) {
mPagerAdapter.addTab(R.string.minimal_ui, MinimalUI::class.java)
- } else {
+ }
+ if (!minimalUi) {
mPagerAdapter.addTab(R.string.vpn_list_title, VPNProfileList::class.java)
mPagerAdapter.addTab(R.string.graph, GraphFragment::class.java)
diff --git a/main/src/ui/java/de/blinkt/openvpn/fragments/MinimalUI.kt b/main/src/ui/java/de/blinkt/openvpn/fragments/MinimalUI.kt
index deaa0aeb..8b53270f 100644
--- a/main/src/ui/java/de/blinkt/openvpn/fragments/MinimalUI.kt
+++ b/main/src/ui/java/de/blinkt/openvpn/fragments/MinimalUI.kt
@@ -35,11 +35,13 @@ import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.app.ActivityCompat.invalidateOptionsMenu
import androidx.fragment.app.Fragment
import androidx.lifecycle.lifecycleScope
+import androidx.webkit.Navigation
import de.blinkt.openvpn.LaunchVPN
import de.blinkt.openvpn.R
import de.blinkt.openvpn.VpnProfile
import de.blinkt.openvpn.VpnProfile.TYPE_KEYSTORE
import de.blinkt.openvpn.VpnProfile.TYPE_USERPASS_KEYSTORE
+import de.blinkt.openvpn.activities.BaseActivity
import de.blinkt.openvpn.activities.ConfigConverter
import de.blinkt.openvpn.core.ConnectionStatus
import de.blinkt.openvpn.core.GlobalPreferences
@@ -170,7 +172,7 @@ class MinimalUI: Fragment(), VpnStatus.StateListener {
}
private fun checkForNotificationPermission(v: View) {
- val permissionView = v.findViewById<View>(R.id.notification_permission)
+ val permissionView = v.findViewById<View>(R.id.notification_permission) ?: return
val permissionGranted =
requireActivity().checkSelfPermission(Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED
@@ -185,7 +187,7 @@ class MinimalUI: Fragment(), VpnStatus.StateListener {
}
private suspend fun checkForKeychainPermission(v: View) {
- val keychainView = v.findViewById<View>(R.id.keychain_notification)
+ val keychainView = v.findViewById<View>(R.id.keychain_notification) ?: return
val profile = ProfileManager.getAlwaysOnVPN(context)
@@ -255,6 +257,13 @@ class MinimalUI: Fragment(), VpnStatus.StateListener {
vpntoggle.setOnClickListener { view ->
toggleSwitchPressed(view as CompoundButton)
}
+ if ((activity as BaseActivity).isAndroidTV)
+ {
+ with( view.findViewById<TextView>(R.id.minimal_ui_title)) {
+ setOnClickListener { _ -> toggleSwitchPressed(vpntoggle) }
+ visibility = View.VISIBLE;
+ }
+ }
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU)
checkForNotificationPermission(view)
@@ -262,6 +271,11 @@ class MinimalUI: Fragment(), VpnStatus.StateListener {
viewLifecycleOwner.lifecycleScope.launch {
checkForKeychainPermission(view)
}
+ view.setOnKeyListener { v, key, event ->
+ Toast.makeText(activity, "Got key event " + event + " key " + key + " view " + v, Toast.LENGTH_LONG).show();
+ false;
+ }
+
return view
}
diff --git a/main/src/ui/java/de/blinkt/openvpn/fragments/VPNProfileList.kt b/main/src/ui/java/de/blinkt/openvpn/fragments/VPNProfileList.kt
index a78c5c40..263d36b5 100644
--- a/main/src/ui/java/de/blinkt/openvpn/fragments/VPNProfileList.kt
+++ b/main/src/ui/java/de/blinkt/openvpn/fragments/VPNProfileList.kt
@@ -41,6 +41,7 @@ import androidx.fragment.app.ListFragment
import de.blinkt.openvpn.LaunchVPN
import de.blinkt.openvpn.R
import de.blinkt.openvpn.VpnProfile
+import de.blinkt.openvpn.activities.BaseActivity
import de.blinkt.openvpn.activities.ConfigConverter
import de.blinkt.openvpn.activities.DisconnectVPN
import de.blinkt.openvpn.activities.FileSelect
@@ -273,8 +274,9 @@ class VPNProfileList : ListFragment(), View.OnClickListener, StateListener {
if (fab_import != null) fab_import.setOnClickListener(this)
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) checkForNotificationPermission(v)
-
+ // TV builds show the minimal UI that already have the notification
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && !((activity as BaseActivity).isAndroidTV))
+ checkForNotificationPermission(v)
return v
}