From ac06bd8dc7045a1f61c47dda79622c3b4908a3c4 Mon Sep 17 00:00:00 2001 From: cyBerta Date: Wed, 17 Jan 2018 18:15:38 +0100 Subject: #8811 set vpn option to top of navigation drawer, minor ux improvements --- .../drawer/NavigationDrawerFragment.java | 74 ++++++++-------------- 1 file changed, 25 insertions(+), 49 deletions(-) (limited to 'app/src/main/java/se/leap/bitmaskclient/drawer') 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 566134dd..ef59185a 100644 --- a/app/src/main/java/se/leap/bitmaskclient/drawer/NavigationDrawerFragment.java +++ b/app/src/main/java/se/leap/bitmaskclient/drawer/NavigationDrawerFragment.java @@ -6,7 +6,6 @@ import android.content.Intent; import android.content.SharedPreferences; import android.content.res.Configuration; import android.os.Bundle; -import android.preference.PreferenceManager; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.view.GravityCompat; @@ -27,15 +26,14 @@ import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.Toast; +import se.leap.bitmaskclient.ConfigHelper; import se.leap.bitmaskclient.ConfigurationWizard; -import se.leap.bitmaskclient.Provider; import se.leap.bitmaskclient.R; import se.leap.bitmaskclient.VpnFragment; import se.leap.bitmaskclient.fragments.AboutFragment; import se.leap.bitmaskclient.fragments.LogFragment; -import se.leap.bitmaskclient.userstatus.User; -import se.leap.bitmaskclient.userstatus.UserStatusFragment; +import static android.content.Context.MODE_PRIVATE; import static se.leap.bitmaskclient.Constants.REQUEST_CODE_SWITCH_PROVIDER; import static se.leap.bitmaskclient.Constants.SHARED_PREFERENCES; @@ -46,11 +44,6 @@ import static se.leap.bitmaskclient.Constants.SHARED_PREFERENCES; */ public class NavigationDrawerFragment extends Fragment { - /** - * Remember the position of the selected item. - */ - private static final String STATE_SELECTED_POSITION = "selected_navigation_drawer_position"; - /** * Per the design guidelines, you should show the drawer on launch until the user manually * expands it. This shared preference tracks this. @@ -67,8 +60,8 @@ public class NavigationDrawerFragment extends Fragment { private ListView mDrawerSettingsListView; private ListView mDrawerAccountsListView; private View mFragmentContainerView; + private ArrayAdapter accountListAdapter; - private int mCurrentSelectedPosition = 0; private boolean mFromSavedInstanceState; private boolean mUserLearnedDrawer; @@ -85,20 +78,8 @@ public class NavigationDrawerFragment extends Fragment { // Read in the flag indicating whether or not the user has demonstrated awareness of the // drawer. See PREF_USER_LEARNED_DRAWER for details. - SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getActivity()); - mUserLearnedDrawer = sp.getBoolean(PREF_USER_LEARNED_DRAWER, false); - - preferences = getActivity().getSharedPreferences(SHARED_PREFERENCES, Context.MODE_PRIVATE); - - if (savedInstanceState != null) { - mCurrentSelectedPosition = savedInstanceState.getInt(STATE_SELECTED_POSITION); - mFromSavedInstanceState = true; - } - - // Select either the default item (0) or the last selected item. - if (mDrawerSettingsListView != null) { - selectItem(mDrawerSettingsListView, mCurrentSelectedPosition); - } + preferences = getContext().getSharedPreferences(SHARED_PREFERENCES, MODE_PRIVATE); + mUserLearnedDrawer = preferences.getBoolean(PREF_USER_LEARNED_DRAWER, false); } @Override @@ -142,12 +123,10 @@ public class NavigationDrawerFragment extends Fragment { android.R.layout.simple_list_item_activated_1, android.R.id.text1, new String[]{ - getString(R.string.vpn_fragment_title), getString(R.string.switch_provider_menu_option), getString(R.string.log_fragment_title), getString(R.string.about_fragment_title), })); - mDrawerSettingsListView.setItemChecked(mCurrentSelectedPosition, true); mDrawerAccountsListView = mDrawerView.findViewById(R.id.accountList); mDrawerAccountsListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @@ -157,14 +136,21 @@ public class NavigationDrawerFragment extends Fragment { } }); - mDrawerAccountsListView.setAdapter(new ArrayAdapter( - actionBar.getThemedContext(), + + + accountListAdapter = new ArrayAdapter<>(actionBar.getThemedContext(), android.R.layout.simple_list_item_activated_1, - android.R.id.text1, - new String[]{ - User.userName(), - })); - mDrawerAccountsListView.setItemChecked(mCurrentSelectedPosition, true); + android.R.id.text1); + + String providerName = ConfigHelper.getCurrentProviderName(preferences); + if (providerName == null) { + //TODO: ADD A header to the ListView containing a useful message. + //TODO 2: disable switchProvider + } else { + accountListAdapter.add(providerName); + } + + mDrawerAccountsListView.setAdapter(accountListAdapter); mFragmentContainerView = activity.findViewById(fragmentId); mDrawerLayout = drawerLayout; @@ -204,9 +190,7 @@ public class NavigationDrawerFragment extends Fragment { // The user manually opened the drawer; store this flag to prevent auto-showing // the navigation drawer automatically in the future. mUserLearnedDrawer = true; - SharedPreferences sp = PreferenceManager - .getDefaultSharedPreferences(getActivity()); - sp.edit().putBoolean(PREF_USER_LEARNED_DRAWER, true).apply(); + preferences.edit().putBoolean(PREF_USER_LEARNED_DRAWER, true).apply(); } getActivity().invalidateOptionsMenu(); // calls onPrepareOptionsMenu() @@ -228,11 +212,9 @@ public class NavigationDrawerFragment extends Fragment { }); mDrawerLayout.addDrawerListener(mDrawerToggle); - selectItem(mDrawerSettingsListView, 0); } private void selectItem(AdapterView list, int position) { - mCurrentSelectedPosition = position; if (list != null) { ((ListView) list).setItemChecked(position, true); } @@ -255,7 +237,6 @@ public class NavigationDrawerFragment extends Fragment { @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); - outState.putInt(STATE_SELECTED_POSITION, mCurrentSelectedPosition); } @Override @@ -307,31 +288,26 @@ public class NavigationDrawerFragment extends Fragment { Fragment fragment = null; if (parent == mDrawerAccountsListView) { - mTitle = User.userName(); - fragment = new UserStatusFragment(); - Bundle bundle = new Bundle(); - bundle.putBoolean(Provider.ALLOW_REGISTRATION, new Provider().allowsRegistration()); - fragment.setArguments(bundle); + mTitle = getString(R.string.vpn_fragment_title); + fragment = new VpnFragment(); } else { Log.d("Drawer", String.format("Selected position %d", position)); switch (position) { - case 1: + case 0: // TODO STOP VPN // if (provider.hasEIP()) eip_fragment.stopEipIfPossible(); preferences.edit().clear().apply(); startActivityForResult(new Intent(getActivity(), ConfigurationWizard.class), REQUEST_CODE_SWITCH_PROVIDER); break; - case 2: + case 1: mTitle = getString(R.string.log_fragment_title); fragment = new LogFragment(); break; - case 3: + case 2: mTitle = getString(R.string.about_fragment_title); fragment = new AboutFragment(); break; default: - mTitle = getString(R.string.vpn_fragment_title); - fragment = new VpnFragment(); break; } } -- cgit v1.2.3