summaryrefslogtreecommitdiff
path: root/app/src/main/java/se/leap/bitmaskclient/drawer/NavigationDrawerFragment.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/se/leap/bitmaskclient/drawer/NavigationDrawerFragment.java')
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/drawer/NavigationDrawerFragment.java48
1 files changed, 39 insertions, 9 deletions
diff --git a/app/src/main/java/se/leap/bitmaskclient/drawer/NavigationDrawerFragment.java b/app/src/main/java/se/leap/bitmaskclient/drawer/NavigationDrawerFragment.java
index 28925efc..f9adede7 100644
--- a/app/src/main/java/se/leap/bitmaskclient/drawer/NavigationDrawerFragment.java
+++ b/app/src/main/java/se/leap/bitmaskclient/drawer/NavigationDrawerFragment.java
@@ -22,10 +22,13 @@ import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.Configuration;
+import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
+import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
+import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBar;
@@ -49,6 +52,8 @@ import android.widget.Toast;
import se.leap.bitmaskclient.ConfigHelper;
import se.leap.bitmaskclient.DrawerSettingsAdapter;
import se.leap.bitmaskclient.DrawerSettingsAdapter.DrawerSettingsItem;
+import se.leap.bitmaskclient.FragmentManagerEnhanced;
+import se.leap.bitmaskclient.fragments.AlwaysOnDialog;
import se.leap.bitmaskclient.EipFragment;
import se.leap.bitmaskclient.Provider;
import se.leap.bitmaskclient.ProviderListActivity;
@@ -59,10 +64,12 @@ import se.leap.bitmaskclient.fragments.LogFragment;
import static android.content.Context.MODE_PRIVATE;
import static se.leap.bitmaskclient.BitmaskApp.getRefWatcher;
import static se.leap.bitmaskclient.ConfigHelper.getSaveBattery;
+import static se.leap.bitmaskclient.ConfigHelper.getShowAlwaysOnDialog;
import static se.leap.bitmaskclient.Constants.PROVIDER_KEY;
import static se.leap.bitmaskclient.Constants.REQUEST_CODE_SWITCH_PROVIDER;
import static se.leap.bitmaskclient.Constants.SHARED_PREFERENCES;
import static se.leap.bitmaskclient.DrawerSettingsAdapter.ABOUT;
+import static se.leap.bitmaskclient.DrawerSettingsAdapter.ALWAYS_ON;
import static se.leap.bitmaskclient.DrawerSettingsAdapter.BATTERY_SAVER;
import static se.leap.bitmaskclient.DrawerSettingsAdapter.DrawerSettingsItem.getSimpleTextInstance;
import static se.leap.bitmaskclient.DrawerSettingsAdapter.DrawerSettingsItem.getSwitchInstance;
@@ -135,7 +142,7 @@ public class NavigationDrawerFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
- mDrawerView = inflater.inflate(R.layout.drawer_main, container, false);
+ mDrawerView = inflater.inflate(R.layout.f_drawer_main, container, false);
restoreFromSavedInstance(savedInstanceState);
return mDrawerView;
}
@@ -180,6 +187,9 @@ public class NavigationDrawerFragment extends Fragment {
}
}));
}
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+ settingsListAdapter.addItem(getSimpleTextInstance(getString(R.string.always_on_vpn), ALWAYS_ON));
+ }
settingsListAdapter.addItem(getSimpleTextInstance(getString(switch_provider_menu_option), SWITCH_PROVIDER));
settingsListAdapter.addItem(getSimpleTextInstance(getString(log_fragment_title), LOG));
settingsListAdapter.addItem(getSimpleTextInstance(getString(about_fragment_title), ABOUT));
@@ -194,7 +204,7 @@ public class NavigationDrawerFragment extends Fragment {
});
accountListAdapter = new ArrayAdapter<>(actionBar.getThemedContext(),
- R.layout.single_list_item,
+ R.layout.v_single_list_item,
android.R.id.text1);
createListAdapterData();
@@ -317,7 +327,8 @@ public class NavigationDrawerFragment extends Fragment {
try {
AlertDialog.Builder alertBuilder = new AlertDialog.Builder(getActivity());
showEnableExperimentalFeature = true;
- alertDialog = alertBuilder.setTitle(activity.getString(R.string.save_battery))
+ alertDialog = alertBuilder
+ .setTitle(activity.getString(R.string.save_battery))
.setMessage(activity.getString(R.string.save_battery_message))
.setPositiveButton((android.R.string.yes), new DialogInterface.OnClickListener() {
@Override
@@ -347,6 +358,19 @@ public class NavigationDrawerFragment extends Fragment {
} catch (IllegalStateException e) {
e.printStackTrace();
}
+ }
+
+ public void showAlwaysOnDialog() {
+ try {
+
+ FragmentTransaction fragmentTransaction = new FragmentManagerEnhanced(
+ getActivity().getSupportFragmentManager()).removePreviousFragment(
+ AlwaysOnDialog.TAG);
+ DialogFragment newFragment = new AlwaysOnDialog();
+ newFragment.show(fragmentTransaction, AlwaysOnDialog.TAG);
+ } catch (IllegalStateException | NullPointerException e) {
+ e.printStackTrace();
+ }
}
@@ -371,11 +395,6 @@ public class NavigationDrawerFragment extends Fragment {
return true;
}
- if (item.getItemId() == R.id.action_example) {
- Toast.makeText(getActivity(), "Example action.", Toast.LENGTH_SHORT).show();
- return true;
- }
-
return super.onOptionsItemSelected(item);
}
@@ -428,10 +447,12 @@ public class NavigationDrawerFragment extends Fragment {
// update the main content by replacing fragments
FragmentManager fragmentManager = getFragmentManager();
Fragment fragment = null;
+ String fragmentTag = null;
if (parent == mDrawerAccountsListView) {
mTitle = getString(R.string.vpn_fragment_title);
fragment = new EipFragment();
+ fragmentTag = EipFragment.TAG;
Bundle arguments = new Bundle();
Provider currentProvider = ConfigHelper.getSavedProviderFromSharedPreferences(preferences);
arguments.putParcelable(PROVIDER_KEY, currentProvider);
@@ -451,6 +472,15 @@ public class NavigationDrawerFragment extends Fragment {
mTitle = getString(about_fragment_title);
fragment = new AboutFragment();
break;
+ case ALWAYS_ON:
+ if (getShowAlwaysOnDialog(getContext())) {
+ showAlwaysOnDialog();
+ } else {
+ Intent intent = new Intent("android.net.vpn.SETTINGS");
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ startActivity(intent);
+ }
+ break;
default:
break;
}
@@ -458,7 +488,7 @@ public class NavigationDrawerFragment extends Fragment {
if (fragment != null) {
fragmentManager.beginTransaction()
- .replace(R.id.container, fragment)
+ .replace(R.id.container, fragment, fragmentTag)
.commit();
}