From 2f2d3c87f1a457e3de73e694999f4fcfa4623e53 Mon Sep 17 00:00:00 2001 From: emanuele-f Date: Tue, 5 Jul 2022 18:58:14 +0200 Subject: [PATCH] Handle VPN exceptions back button if search open --- .../com/emanuelef/remote_capture/Utils.java | 10 ++++++++++ .../activities/VpnExceptionsActivity.java | 18 ++++++++++++++++++ .../remote_capture/fragments/AppsToggles.java | 6 ++++++ .../fragments/ConnectionsFragment.java | 9 ++------- 4 files changed, 36 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/emanuelef/remote_capture/Utils.java b/app/src/main/java/com/emanuelef/remote_capture/Utils.java index 22c5b70b..6eba89b6 100644 --- a/app/src/main/java/com/emanuelef/remote_capture/Utils.java +++ b/app/src/main/java/com/emanuelef/remote_capture/Utils.java @@ -1287,4 +1287,14 @@ public class Utils { // Delay otherwise the query won't be set when the activity is just started searchView.post(() -> searchView.setQuery(query, true)); } + + public static boolean backHandleSearchview(SearchView searchView) { + if((searchView != null) && !searchView.isIconified()) { + // Required to close the SearchView when the search submit button was not pressed + searchView.setIconified(true); + return true; + } + + return false; + } } diff --git a/app/src/main/java/com/emanuelef/remote_capture/activities/VpnExceptionsActivity.java b/app/src/main/java/com/emanuelef/remote_capture/activities/VpnExceptionsActivity.java index 4de648bb..1dc8de62 100644 --- a/app/src/main/java/com/emanuelef/remote_capture/activities/VpnExceptionsActivity.java +++ b/app/src/main/java/com/emanuelef/remote_capture/activities/VpnExceptionsActivity.java @@ -23,6 +23,7 @@ import android.content.Context; import android.content.SharedPreferences; import android.os.Bundle; import android.util.Log; +import android.view.MenuItem; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -61,6 +62,23 @@ public class VpnExceptionsActivity extends BaseActivity { getSupportFragmentManager().putFragment(outState, "fragment", mFragment); } + @Override + public boolean onOptionsItemSelected(MenuItem item) { + if(item.getItemId() == android.R.id.home) { + onBackPressed(); + return true; + } + return super.onOptionsItemSelected(item); + } + + @Override + public void onBackPressed() { + if(mFragment.onBackPressed()) + return; + + super.onBackPressed(); + } + public static class VpnExceptionsFragment extends AppsToggles { private static final String TAG = "VpnExceptions"; private final Set mExcludedApps = new HashSet<>(); diff --git a/app/src/main/java/com/emanuelef/remote_capture/fragments/AppsToggles.java b/app/src/main/java/com/emanuelef/remote_capture/fragments/AppsToggles.java index f54eb405..e2b97153 100644 --- a/app/src/main/java/com/emanuelef/remote_capture/fragments/AppsToggles.java +++ b/app/src/main/java/com/emanuelef/remote_capture/fragments/AppsToggles.java @@ -122,6 +122,12 @@ public abstract class AppsToggles extends Fragment implements AppsLoadListener, } } + // NOTE: must be called from the activity + public boolean onBackPressed() { + Log.d(TAG, "onBackPressed"); + return Utils.backHandleSearchview(mSearchView); + } + @Override public boolean onQueryTextSubmit(String query) { return true; } diff --git a/app/src/main/java/com/emanuelef/remote_capture/fragments/ConnectionsFragment.java b/app/src/main/java/com/emanuelef/remote_capture/fragments/ConnectionsFragment.java index 199dad8a..e2cadae7 100644 --- a/app/src/main/java/com/emanuelef/remote_capture/fragments/ConnectionsFragment.java +++ b/app/src/main/java/com/emanuelef/remote_capture/fragments/ConnectionsFragment.java @@ -811,13 +811,8 @@ public class ConnectionsFragment extends Fragment implements ConnectionsListener return true; } + // NOTE: dispatched from activity, returns true if handled public boolean onBackPressed() { - if((mSearchView != null) && !mSearchView.isIconified()) { - // Required to close the SearchView when the search submit button was not pressed - mSearchView.setIconified(true); - return true; - } - - return false; + return Utils.backHandleSearchview(mSearchView); } }