diff options
| author | Arne Schwabe <arne@rfc2549.org> | 2025-12-16 16:17:26 +0100 |
|---|---|---|
| committer | Arne Schwabe <arne@rfc2549.org> | 2026-01-06 00:02:56 +0100 |
| commit | c354856f29fe219930aade007bb166c8e17d7464 (patch) | |
| tree | 9bce430bac7199fe11a850800d51043a3dcb1e56 /main/src/ui/java | |
| parent | 5cff44dae07556317b905452cc2cd735f82d1e1a (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')
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 } |
