diff options
Diffstat (limited to 'app/src/main/java/se/leap/bitmaskclient/base/fragments/NavigationDrawerFragment.java')
-rw-r--r-- | app/src/main/java/se/leap/bitmaskclient/base/fragments/NavigationDrawerFragment.java | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/app/src/main/java/se/leap/bitmaskclient/base/fragments/NavigationDrawerFragment.java b/app/src/main/java/se/leap/bitmaskclient/base/fragments/NavigationDrawerFragment.java index 2ce0e597..5cae1591 100644 --- a/app/src/main/java/se/leap/bitmaskclient/base/fragments/NavigationDrawerFragment.java +++ b/app/src/main/java/se/leap/bitmaskclient/base/fragments/NavigationDrawerFragment.java @@ -50,6 +50,7 @@ import java.util.Observer; import java.util.Set; import de.blinkt.openvpn.core.VpnStatus; +import se.leap.bitmaskclient.BuildConfig; import se.leap.bitmaskclient.base.FragmentManagerEnhanced; import se.leap.bitmaskclient.base.MainActivity; import se.leap.bitmaskclient.base.models.Provider; @@ -70,6 +71,7 @@ import static android.view.View.VISIBLE; import static se.leap.bitmaskclient.base.BitmaskApp.getRefWatcher; import static se.leap.bitmaskclient.base.models.Constants.DONATION_URL; import static se.leap.bitmaskclient.base.models.Constants.ENABLE_DONATION; +import static se.leap.bitmaskclient.base.models.Constants.PREFERRED_CITY; import static se.leap.bitmaskclient.base.models.Constants.PROVIDER_KEY; import static se.leap.bitmaskclient.base.models.Constants.REQUEST_CODE_SWITCH_PROVIDER; import static se.leap.bitmaskclient.base.models.Constants.SHARED_PREFERENCES; @@ -79,6 +81,7 @@ import static se.leap.bitmaskclient.R.string.about_fragment_title; import static se.leap.bitmaskclient.R.string.exclude_apps_fragment_title; import static se.leap.bitmaskclient.R.string.log_fragment_title; import static se.leap.bitmaskclient.base.utils.ConfigHelper.isDefaultBitmask; +import static se.leap.bitmaskclient.base.utils.PreferenceHelper.getPreferredCity; import static se.leap.bitmaskclient.base.utils.PreferenceHelper.getSaveBattery; import static se.leap.bitmaskclient.base.utils.PreferenceHelper.getShowAlwaysOnDialog; import static se.leap.bitmaskclient.base.utils.PreferenceHelper.getUsePluggableTransports; @@ -114,6 +117,7 @@ public class NavigationDrawerFragment extends Fragment implements SharedPreferen private IconSwitchEntry saveBattery; private IconTextEntry tethering; private IconSwitchEntry firewall; + private IconTextEntry manualGatewaySelection; private View experimentalFeatureFooter; private boolean userLearnedDrawer; @@ -255,6 +259,7 @@ public class NavigationDrawerFragment extends Fragment implements SharedPreferen initSaveBatteryEntry(); initAlwaysOnVpnEntry(); initExcludeAppsEntry(); + initManualGatewayEntry(); initShowExperimentalHint(); initTetheringEntry(); initFirewallEntry(); @@ -412,6 +417,26 @@ public class NavigationDrawerFragment extends Fragment implements SharedPreferen }); } + private void initManualGatewayEntry() { + if (!BuildConfig.allow_manual_gateway_selection) { + return; + } + manualGatewaySelection = drawerView.findViewById(R.id.manualGatewaySelection); + String preferredGateway = getPreferredCity(getContext()); + String subtitle = preferredGateway != null ? preferredGateway : getString(R.string.gateway_selection_best_location); + manualGatewaySelection.setSubtitle(subtitle); + boolean show = ProviderObservable.getInstance().getCurrentProvider().hasGatewaysInDifferentLocations(); + manualGatewaySelection.setVisibility(show ? VISIBLE : GONE); + + manualGatewaySelection.setOnClickListener(v -> { + FragmentManagerEnhanced fragmentManager = new FragmentManagerEnhanced(getActivity().getSupportFragmentManager()); + closeDrawer(); + Fragment fragment = new GatewaySelectionFragment(); + setActionBarTitle(R.string.gateway_selection_title); + fragmentManager.replace(R.id.main_container, fragment, MainActivity.TAG); + }); + } + private void initTetheringEntry() { tethering = drawerView.findViewById(R.id.tethering); boolean show = showExperimentalFeatures(getContext()); @@ -627,6 +652,7 @@ public class NavigationDrawerFragment extends Fragment implements SharedPreferen Provider currentProvider = ProviderObservable.getInstance().getCurrentProvider(); account.setText(currentProvider.getName()); initUseBridgesEntry(); + initManualGatewayEntry(); } private void updateExcludeAppsSubtitle(IconTextEntry excludeApps, int number) { @@ -651,6 +677,8 @@ public class NavigationDrawerFragment extends Fragment implements SharedPreferen initUseBridgesEntry(); } else if (key.equals(USE_IPv6_FIREWALL)) { initFirewallEntry(); + } else if (key.equals(PREFERRED_CITY)) { + initManualGatewayEntry(); } } |