From 6d77ad0faf4dc623b20506cefb1afee330a1e6a3 Mon Sep 17 00:00:00 2001 From: Thomas Date: Thu, 19 May 2022 19:01:55 +0200 Subject: [PATCH] Fix issue #27 - Enable custom tabs from settings to support autofill with password managers --- .../android/activities/LoginActivity.java | 52 ++++-------------- .../ui/fragment/login/FragmentLoginMain.java | 55 +++++++++---------- app/src/main/res/menu/main_login.xml | 39 +++++++------ 3 files changed, 59 insertions(+), 87 deletions(-) diff --git a/app/src/main/java/app/fedilab/android/activities/LoginActivity.java b/app/src/main/java/app/fedilab/android/activities/LoginActivity.java index a7188eba5..f234ce802 100644 --- a/app/src/main/java/app/fedilab/android/activities/LoginActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/LoginActivity.java @@ -150,8 +150,6 @@ public class LoginActivity extends BaseActivity { SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(LoginActivity.this); boolean embedded_browser = sharedpreferences.getBoolean(getString(R.string.SET_EMBEDDED_BROWSER), true); menu.findItem(R.id.action_custom_tabs).setChecked(!embedded_browser); - /* boolean security_provider = sharedpreferences.getBoolean(getString(R.string.SET_SECURITY_PROVIDER), true); - menu.findItem(R.id.action_provider).setChecked(security_provider);*/ return true; } @@ -162,45 +160,17 @@ public class LoginActivity extends BaseActivity { // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); - //noinspection SimplifiableIfStatement - if (id == R.id.action_about) { - // Intent intent = new Intent(LoginActivity.this, AboutActivity.class); - // startActivity(intent); - } else if (id == R.id.action_privacy) { - // Intent intent = new Intent(LoginActivity.this, PrivacyActivity.class); - // startActivity(intent); - } else if (id == R.id.action_proxy) { - Intent intent = new Intent(LoginActivity.this, ProxyActivity.class); - startActivity(intent); - } else if (id == R.id.action_custom_tabs) { - item.setChecked(!item.isChecked()); - SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(LoginActivity.this); - SharedPreferences.Editor editor = sharedpreferences.edit(); - editor.putBoolean(getString(R.string.SET_EMBEDDED_BROWSER), !item.isChecked()); - editor.apply(); - return false; - } else if (id == R.id.action_provider) { - /* item.setChecked(!item.isChecked()); - SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, MODE_PRIVATE); - SharedPreferences.Editor editor = sharedpreferences.edit(); - editor.putBoolean(getString(R.string.SET_SECURITY_PROVIDER), item.isChecked()); - editor.apply();*/ - return false; - } else if (id == R.id.action_import_data) { - /* if (ContextCompat.checkSelfPermission(LoginActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE) != - PackageManager.PERMISSION_GRANTED) { - ActivityCompat.requestPermissions(LoginActivity.this, - new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, - TootActivity.MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE); - return true; - }*/ - Intent intent = new Intent(Intent.ACTION_GET_CONTENT); - intent.addCategory(Intent.CATEGORY_OPENABLE); - intent.setType("*/*"); - String[] mimetypes = {"*/*"}; - intent.putExtra(Intent.EXTRA_MIME_TYPES, mimetypes); - startActivityForResult(intent, PICK_IMPORT); - } + if (id == R.id.action_proxy) { + Intent intent = new Intent(LoginActivity.this, ProxyActivity.class); + startActivity(intent); + } else if (id == R.id.action_custom_tabs) { + item.setChecked(!item.isChecked()); + SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(LoginActivity.this); + SharedPreferences.Editor editor = sharedpreferences.edit(); + editor.putBoolean(getString(R.string.SET_EMBEDDED_BROWSER), !item.isChecked()); + editor.apply(); + return false; + } return super.onOptionsItemSelected(item); } diff --git a/app/src/main/java/app/fedilab/android/ui/fragment/login/FragmentLoginMain.java b/app/src/main/java/app/fedilab/android/ui/fragment/login/FragmentLoginMain.java index 08a8f9486..5c5700d61 100644 --- a/app/src/main/java/app/fedilab/android/ui/fragment/login/FragmentLoginMain.java +++ b/app/src/main/java/app/fedilab/android/ui/fragment/login/FragmentLoginMain.java @@ -48,6 +48,7 @@ import java.net.URLEncoder; import app.fedilab.android.BaseMainActivity; import app.fedilab.android.R; +import app.fedilab.android.activities.ProxyActivity; import app.fedilab.android.activities.WebviewConnectActivity; import app.fedilab.android.client.entities.Account; import app.fedilab.android.client.entities.InstanceSocial; @@ -175,44 +176,40 @@ public class FragmentLoginMain extends Fragment { PopupMenu popupMenu = new PopupMenu(new ContextThemeWrapper(requireActivity(), Helper.popupStyle()), binding.menuIcon); MenuInflater menuInflater = popupMenu.getMenuInflater(); menuInflater.inflate(R.menu.main_login, popupMenu.getMenu()); + MenuItem customTabItem = popupMenu.getMenu().findItem(R.id.action_custom_tabs); + SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(requireActivity()); + boolean embedded_browser = sharedpreferences.getBoolean(getString(R.string.SET_EMBEDDED_BROWSER), true); + customTabItem.setChecked(!embedded_browser); popupMenu.setOnMenuItemClickListener(item -> { int itemId = item.getItemId(); - if (itemId == R.id.action_about) { - /* Todo: Open about page */ - } else if (itemId == R.id.action_privacy) { - /* Todo: Open privacy page */ - } else if (itemId == R.id.action_proxy) { - /* Todo: Open proxy settings */ + if (itemId == R.id.action_proxy) { + Intent intent = new Intent(requireActivity(), ProxyActivity.class); + startActivity(intent); } else if (itemId == R.id.action_custom_tabs) { - setMenuItemKeepOpen(item); - /* Todo: Toggle custom tabs */ - } else if (itemId == R.id.action_import_data) { - /* Todo: Import data */ - } else if (itemId == R.id.action_provider) { - setMenuItemKeepOpen(item); - /* Todo: Toggle security provider */ + boolean checked = !embedded_browser; + item.setChecked(!item.isChecked()); + SharedPreferences.Editor editor = sharedpreferences.edit(); + editor.putBoolean(getString(R.string.SET_EMBEDDED_BROWSER), checked); + item.setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW); + item.setActionView(new View(requireContext())); + item.setOnActionExpandListener(new MenuItem.OnActionExpandListener() { + @Override + public boolean onMenuItemActionExpand(MenuItem item) { + return false; + } + + @Override + public boolean onMenuItemActionCollapse(MenuItem item) { + return false; + } + }); + editor.apply(); } return false; }); popupMenu.show(); } - private void setMenuItemKeepOpen(MenuItem item) { - item.setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW); - item.setActionView(new View(requireContext())); - item.setOnActionExpandListener(new MenuItem.OnActionExpandListener() { - @Override - public boolean onMenuItemActionExpand(MenuItem item) { - return false; - } - - @Override - public boolean onMenuItemActionCollapse(MenuItem item) { - return false; - } - }); - } - @Override public void onDestroyView() { super.onDestroyView(); diff --git a/app/src/main/res/menu/main_login.xml b/app/src/main/res/menu/main_login.xml index 62e5a8518..bc54c323e 100644 --- a/app/src/main/res/menu/main_login.xml +++ b/app/src/main/res/menu/main_login.xml @@ -1,14 +1,17 @@ - - + - - +